Java SimpleDateFormat时区解析

我很好奇Java的SimpleDateFormat如何根据它设置的时区决定何时递增/递减传入时间。

假设我有一个日期06/04/2013。 然后我把时区设置为离我很远(我在格林威治标准时间-5)。 假设我使用GMT + 8。

我打电话

SimpleDateFormat df = new SimpleDateFormat( "M/d/yy" );
df.setTimeZone( TimeZone.getTimeZone( "GMT+8" ) );
df.parse( endDate ) // this returns 06/**03**/2013  //endDate is just a String

它返回06/03/2013。 它为什么减少它?

编辑:基本上我问什么是Java的参考点,如果我将它设置为GMT + 8,我将日期敲回6/3。 有一些逻辑说,嘿,我不在这个当前的时区,所以让我们改变它。 但是由于我传递了一个字符串,我没有看到它可能在哪里。

我假设默认情况下,如果我不在字符串中提供时区,它将默认为GMT。


你在GMT-5,你正在分析一个代表GMT + 8时区的时刻的字符串。

所以, 06/04/2013的日期实际上是06/04/2013 00:00 GMT+8 。 要在格林威治标准时间获得日期,您必须减去8小时: 06/03/2013 16:00 GMT 。 为了得到格林威治标准时间-5的日期,你必须再减去5小时: 06/03/2013 11:00 GMT-5

所有这些字符串都是同一时刻的不同表示。

链接地址: http://www.djcxy.com/p/18601.html

上一篇: Java SimpleDateFormat timezone parsing

下一篇: Get Value Of Day Month form Date Object in Android?