Java日期字符串解析创建时区差异

标签 java parsing date datetime

我对此感到有些沮丧。

我有一个字符串 "2015-02-18T23:44:59" 表示 GMT 格式的时间。

我想将这个日期解析成日期对象。

String dateStr = "2015-02-18T23:44:59";
Date date = DateUtils.parseDate(dateStr, new String[]{"yyyy-MM-dd'T'HH:mm:ss"});
System.out.println(dateStr + " \t" + date.toString());

这个输出:

2015-02-18T23:44:59     Thu Feb 19 05:14:59 IST 2015

如您所见,后面的时间有 IST 时区,但我原来的时间是 GMT。 我认为没有任何采用当前日期时区的解析函数。

回答这个问题的一种方法是:

date.setTime(date.getTime() + ( date.getTimezoneOffset()  * 60 * 1000));
System.out.println("\t"  + date.toString());

这个输出:

Wed Feb 18 23:44:59 IST 2015

这似乎是正确的时间(但不正确的时区)。此外,getTimezoneOffset() 已弃用。

谁能建议我一个更好的方法来处理考虑时区的字符串日期。

最佳答案

我会使用日期格式:

SimpleDateFormat utcFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss");
utcFormat.setTimeZone(TimeZone.getTimeZone("UTC"));
Date date = utcFormat.parse("2015-02-18T23:44:59");

关于Java日期字符串解析创建时区差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28603966/

相关文章:

java - 通用 XML 解析器设计分析

javascript - 如何使用在隐藏字段内指定的日期设置日期选择器的最大日期和最小日期

javascript - Angular Moment Picker 库中的日期格式问题

java - com.dhtmlx.connector.JSONOptionsConnector 无法转换为 com.dhtmlx.connector.OptionsConnector

java - spring security 未调用 loadUserByUsername() 方法

ruby-on-rails - 在 ruby​​ 中解析一个巨大的 JSON 文件的最佳方法

java - 如何将 3D 纹理加载到 LWJGL 中的 3D 模型上

java - 为日期格式声明字符串常量,而不是显式地编写字符串值

java - Java 比较 2 个字符串的回文检查

java - 1970 年 1 月 1 日之前的日期