Java/GWT中的时区(客户端)

Fed*_*rer 8 java gwt

[客户端GWT类]

我有一个日期对象......

Date dataObject = DateTimeFormat.getFormat("yyyy-MM-dd'T'HH:mm:ss.SSS")
                      .parse("2009-10-12T00:00:00.000);
Run Code Online (Sandbox Code Playgroud)

这很好用.但是,当我这样做时:

dateObject.getTime();
Run Code Online (Sandbox Code Playgroud)

它使用具有夏令时的GMT返回UNIX时间毫秒,因此使其成为我无法使用的UNIX时间.我需要它在UTC.我该怎么做呢?


目前我正在解析一个日期,它正在给我回复:

'Thu Apr 16 08:46:20 GMT+100 2009' @ '1239867980191'
Run Code Online (Sandbox Code Playgroud)

然而,我传递的日期比这个时间少了1小时(7:46而不是8:46!).

我如何传递UTC的事实?或者,如果它不能使用UTC(这将是荒谬的),如何在没有夏令时的情况下使用GMT?

Tho*_*nin 5

你的上一次编辑让事情更加清晰.

基本上,你很困惑,你已经得到了你想要的东西.

自Epoch转换为2009年4月16日星期四,格林威治标准时间区域7:46:20.191以来的1239867980191毫秒.同一天即转换为同一天,但GMT + 01时区为8:46:20.191.如果您的输入字符串指定为"7:46:20.191"并且您确实从此获得了1239867980191,Date.getTime()则解析代码将您的"7:46:20.191"理解为在GMT时区中进行解释,并且正确执行.

如果之后您在打印时得到"8:46:20",这只是因为您使用GMT + 01时区来显示该瞬间.请注意,该字符串包含GMT+100精确通知您它使用该时区进行显示.该瞬间Date实例表示仍然是正是你希望它包含的瞬间.请记住,一个Date实例表示一个时刻,对于该时刻,不适用时区概念:时区用于将时刻转换为日历元素(天,小时......)和返回.

要将a转换Date为可显示的字符串,请使用DateTimeFormat.format(Date, TimeZone)该字符串指定要用于该字符串的时区.