当前位置: 首页 > 知识库问答 >
问题:

Android中Xperia设备的奇怪日期格式行为

严景焕
2023-03-14

我在 Android 中面临日期解析的真正问题。我通过 JSON 接收一个日期,日期为 dd/MM/yyyy HH:mm z 格式,我所需要的只是获取“本地化”的小时和分钟并将其显示在我的应用程序中。使用我的代码,每台设备上一切正常,但我的客户报告说,他们在使用索尼XPERIA设备时无法看到应用程序中的时间。他们还告诉我,他们有一个无法显示时间的XPeria设备,然后他们扎根它,一切都开始正常工作。所以我认为这是相关的,所以索尼操作系统的日期/简单日期格式/区域设置/时区的一些奇怪实现。这是我的代码。

getDateLocalized("18/06/2012 18:00 CEST","HH:mm");

public static String getDateLocalized(String match_date, String pattern) {
    String d = "";
    String format = "dd/MM/yyyy HH:mm z";
    SimpleDateFormat sdf = getSimpleDateFormat();
    try {
        Date date = sdf.parse(match_date);
        sdf.setTimeZone(TimeZone.getDefault());
        sdf.applyLocalizedPattern(pattern);
        d = sdf.format(date);
        sdf.applyLocalizedPattern(format);
    } catch (ParseException e) {
        e.printStackTrace();
    }
    return d;
}

private static SimpleDateFormat getSimpleDateFormat() {
    String format = "dd/MM/yyyy HH:mm z";
    if (simpledateformat == null)
        simpledateformat = new SimpleDateFormat(format, Locale.UK);
    return simpledateformat;
}

我使用单例模式来检索简单数据格式对象,因为它的创建非常昂贵,而且我同时显示大量的计时。我使用Locale.UK,因为输入日期的语言是英语。

大问题是我没有任何索尼xperia设备来测试它:(

谢谢你的建议

共有1个答案

闽承望
2023-03-14

问题基本上不在于Xperia设备,我认为默认格式化程序的问题。当我们得到Calender.getInstance().getTime()时,显示正确的日期,当我们进行格式化时,所有的混乱都会发生。不知道为什么这么贴一个补丁,对我有用。

 if(formattedDate.contains("HH")){
                int hris = Calendar.getInstance().get(Calendar.HOUR_OF_DAY);
                formattedDate = formattedDate.replace("HH", ""+hris);

            }
 类似资料:
  • 问题内容: 我正在使用Python访问某些Web服务的移动API,响应中包含以下奇怪的日期表示法:这应该是2014年9月1日。 我不确定这是哪种格式,但是我想将其转换为可读的格式,即a或a或Unix时间。 有人可以帮我吗? 问题答案: 时间字符串看起来像[Datetime的OData版本2JSON详细格式,可以在旧的ASP.NET或WCF应用程序中看到: “ / Date( [“ +” |“-”

  • 对于我的一个客户,我正在处理一些非常古老的日期,例如: 0572-06-17 1000-06-17 当我将字符串转换为日期时,它有一个奇怪的时区。例子: 你可以看到时区是00:17。为什么会出现这个奇怪的时区?

  • 该表包含每个月的内容:第一天、最后一天以及这两天之间的天数。 预期成果: /** 英国标准时间2016年9月30日(星期五)00:00:00-英国标准时间2016年10月29日(星期六)23:59:59 2016年10月30日太阳00:00:00英国标准时间2016年11月29日星期二23:59:59 GMT 2016-31 格林尼治时间2016年11月30日00:00:00-格林尼治时间2016

  • 问题内容: 我有日期的字符串形式: 我想将其格式化为 我在用 但它不起作用。 我如何转换为? 问题答案: 试试这个 现在

  • 首先,我将设置场景。我正在使用双周库创建一个VEvent和一个iCalendar。一切都很好(代码如下)。我可以成功地发送日历邀请到谷歌和适当的‘接受,拒绝,添加到日历’选项可用。 当我向Outlook发送相同的消息时,我没有收到正确的邀请。邮件的格式是希望收件人发送邀请--而不是被邀请,也不是添加到他/她的日历中。 框架:

  • 问题内容: 关于正则表达式有一个问题,试图回答我发现了另一个奇怪的事情。 这将打印YY。为什么?? 这会打印YXY 为什么勉强的正则表达式与“ X”字符不匹配?有,但为什么第一次不匹配三个符号和匹配的是两个,然后一个而不是三个?和第二个正则表达式仅匹配s而不匹配? 问题答案: 让我们依次考虑它们: 有两个匹配项: 在字符位置0处被匹配,并被替换为。 在字符位置1,空字符串被匹配,并被添加到输出中。