在Android中本地化时间

时间:2014-02-06 08:28:52

标签: java android datetime timestamp locale

我正在开发Android应用程序。用户可以发帖,可以看到对方的帖子,非常像Twitter。这是时间问题。

当服务器序列化来自DB的时间戳并作为响应发送时,它会响应如下字符串:2011-09-01 13:20:30+00:00"我认为+00:00部分是UTC offset

我想知道将这个字符串解析为本地时区的某个时间对象的好方法是什么?所以我可以在UI上正确显示它?

谢谢!

2 个答案:

答案 0 :(得分:0)

您可以将其解析为日期对象,然后根据用户的区域设置使用SimpleDateFormatter对其进行格式化。

答案 1 :(得分:0)

SimpleDateFormat能够以有意义的方式独立捕捉您的偏移量。您希望将偏移量转换为区域,而不将其明确指定给parser实例。

使用SimpleDateFormat

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ssXXX");
try {
    System.out.println(sdf.parse(date));
} catch (ParseException e) {
    e.printStackTrace();
}

给出,

Thu Sep 01 18:50:30 IST 2011

joda时间库提供了另一种解决方案。

DateTimeFormatter能够解析添加到模式中Z的格式,解析日期位于 用户默认时区 。< / p>

DateTimeFormatter parser = DateTimeFormat.forPattern("yyyy-MM-dd HH:mm:ssZ");
String date = "2011-09-01 13:20:30+00:00";

System.out.println(parser.parseDateTime(date));
System.out.println(parser.parseDateTime(date).toDate());

给出,

2011-09-01T18:50:30.000+05:30
Thu Sep 01 18:50:30 IST 2011

您可以选择上述任何日期格式,进行修改,进一步处理并作为应用程序的一部分使用。