我正在开发Android应用程序。用户可以发帖,可以看到对方的帖子,非常像Twitter。这是时间问题。
当服务器序列化来自DB的时间戳并作为响应发送时,它会响应如下字符串:2011-09-01 13:20:30+00:00"
我认为+00:00
部分是UTC offset。
我想知道将这个字符串解析为本地时区的某个时间对象的好方法是什么?所以我可以在UI上正确显示它?
谢谢!
答案 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
您可以选择上述任何日期格式,进行修改,进一步处理并作为应用程序的一部分使用。