2011-10-31 111 views
6

为什么当我给GMT时区输入日期字符串,SimpleDateFormat解析它并输出EET时区? Java SimpleDateFormat解析后错误的时区

public static String DATE_FORMAT="dd MMM yyyy hh:mm:ss z"; 
public static String CURRENT_DATE_STRING ="31 October 2011 11:19:56 GMT"; 
SimpleDateFormat simpleDateFormat = new SimpleDateFormat(DATE_FORMAT, Locale.US); 
    simpleDateFormat.setTimeZone(TimeZone.getTimeZone("GMT")); 
    System.out.println(simpleDateFormat.parseObject(CURRENT_DATE_STRING)); 

和输出是: 周一10月31日13时19分56秒EET 2011 而不是 周一10月31日13时19分56秒格林尼治标准时间2011

回答

10

你打印出的Date.toString()结果。 A Date没有任何时区的概念 - 这只是UTC Unix时代以来的毫秒数。 Date.toString()总是使用系统默认时区。

请注意,你不应该期待“周一10月31日13点十九分56秒格林尼治标准时间2011”因为你给了一个时间,指定的11 GMT小时,而不是13

如果你想要使用特定时区进行打印,则应使用另一个DateFormat进行打印,而不要使用Date.toString()。 (Date.toString()不断造成这样的混乱;这真的很不幸)。

+0

谢谢,快速回答。 – IgorDiy

相关问题