Java 日期字符串解析产生时区差异
Java date string parse creates difference of timezone
对此我有点沮丧。
我有一个字符串 "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");
对此我有点沮丧。
我有一个字符串 "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");