Android Time.format(“%a”)给出错误的星期几

时间:2011-08-01 14:25:40

标签: android strftime

我正在尝试检索给定时间戳的本地化日期。我的代码是这样的

String timestamp = "2011-08-01T15:55:03.000+02:00";
Time time = new Time();
time.parse3339(timestamp);
// In strftime format "%a" should be the abbreviated weekday name
// according to the current locale.
String result = time.format("%a")

由于2011年8月1日是星期一,结果字符串应该是“星期一”(假设是英语语言环境),而是“Sun”!

3 个答案:

答案 0 :(得分:5)

必须调用time.normalize(),否则weekDay,yearDay,isDst和gmtoff的值都将为0。

正确的代码是:

time.parse3339(timestamp);
time.normalize(false);
String localizedDayOfWeek = time.format("%a")

感谢Femi,他指出在某些情况下,时间可以通过time.parse3339()转换为UTC,从而使我走上正轨。

答案 1 :(得分:1)

您应该检查返回值:来自javadoc

Returns true if the resulting time value is in UTC time.

如果解析返回了星期日的UTC时间,你可能会得到这个。鉴于上面的例子,我不知道如何做到这一点,但是我想不出任何能做到这一点的事情。

答案 2 :(得分:0)

您真的需要解析给定的时间戳,还是现在想要约会?在后者的情况下,使用:

Time time = new Time();
time.setToNow();
String result = time.format("%a");