我对此感到有些沮丧。
我有一个字符串 "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/