SimpleDateFormat在IST时区工作,但在JST时区不工作



我正在分析格式为的日期

SimpleDateFormat formatter = new SimpleDateFormat("EE MMM dd HH:mm:ss Z yyyy");

当我这样做的时候,

String collectDate = "Sun Nov 24 13:00:07 IST 2013";
Date date = formatter.parse(collectDate);

字符串已成功解析。

但当在日期为"Sun Nov 24 13:00:07 JST 2013"的JST时区机器中运行相同的代码时,这就不起作用了。

需要帮助。提前谢谢。

嗯。那是印度标准时间吗?以色列标准时间?爱尔兰标准时间?所有这些都是对IST的有效解释。看看这里和这里。

如果我说不出来,你希望电脑怎么知道?

唯一可以保证的缩写是RFC822定义的缩写,即EST、CST、MST、PST、EDT、CDT、MDT、PDT、GMT、UT。即使这样,你也应该避免使用它们。CST除了RFC822中定义的美国中央标准时间之外,还有5种不同的解释。

相反,您应该使用IANA时区标识符,例如Asia/KolkataAsia/Tokyo

Java在内部使用UTC(nee GMT)。当你显示它时,你得到的是时间上的那一刻(但有GMT+9的局部偏移,例如Japan Standard Time)。

javadoc明确指出

SimpleDateFormat是一个具体的类,用于以区域设置敏感的方式格式化和解析日期。

这正是它所做的,它只用于解析和格式化Date对象。java隐含地使用UTC时间来表示日期对象。如果您尝试打印它,它会使用系统中设置的本地时区来"格式化"日期对象并将其打印为标准输出。

在处理JST格式的日期时,您可以遵循相同的规则。以下是执行此操作的代码片段。

public static void main( String[] args )
   {
  SimpleDateFormat formatter = new SimpleDateFormat("EE MMM dd HH:mm:ss Z yyyy");

  String collectDate = "Sun Nov 24 13:00:07 JST 2013";
  try
  {
     Date date = formatter.parse(collectDate);
     System.out.println(date);
     formatter.setTimeZone(TimeZone.getTimeZone("JST"));
     System.out.println(formatter.format(date));
  }
  catch (ParseException e)
  {
     e.printStackTrace();
  }
   } 

您可以清楚地看到第一个系统输出和第二个系统输出之间的区别。

相关内容

  • 没有找到相关文章

最新更新