2

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

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 日是星期一,结果字符串应该是“Mon”(假设是英语语言环境),而是“Sun”!

4

3 回答 3

5

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

正确的代码是:

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

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

于 2011-08-02T12:22:56.280 回答
1

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

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

如果解析返回的 UTC 时间落在星期日,您可能会得到这个。鉴于您上面的示例,不确定这将如何实现,但我想不出其他任何可以做到这一点的方法。

于 2011-08-01T14:42:35.977 回答
0

您真的需要解析给定的时间戳,还是想立即获取日期?在后者的情况下,使用:

Time time = new Time();
time.setToNow();
String result = time.format("%a");
于 2011-08-01T14:51:00.637 回答