在Java中解析日期时间

时间:2013-03-12 10:46:49

标签: java date timezone

鉴于此代码......

 String date = "11:00 AM";

 SimpleDateFormat sdf = new SimpleDateFormat("h:mm a");

 sdf.setTimeZone(TimeZone.getTimeZone("US/Eastern")); // --> should be GMT-4

 TimeZone.setDefault(TimeZone.getTimeZone("GMT"));

 Date parse = sdf.parse(date); // -- gives Thu Jan 01 16:00:00 GMT 1970

为什么日期解析会给我16:00而不是15:00?

3 个答案:

答案 0 :(得分:1)

您不能仅使用java.util.Date来存储时间。它将分配1970年,在某些情况下是不正确的。我建议使用org.joda.time.LocalTime

答案 1 :(得分:0)

还要考虑节省日光。这应该给你你期望的

sdf.setTimeZone(TimeZone.getTimeZone( “EST5EDT”));

答案 2 :(得分:0)

如果您未默认提供任何日期部分,则会为其分配默认Epoche standard date(01 Jan 1970 00:00 Hours,称为Epoche standard time,并将其作为标准来衡量所有与时间相关的计算作为基准时间。 / p>

java.util.Date类的getTime()方法返回给定date(including time also)Epoche standard( 01 Jan 1970 00:00 Hours)之间的总毫秒数。 虽然您没有使用getTime()方法,但这里无关紧要。 所以只是你得到那个时间。 根据GMT,它是对的。

我认为它会对你有帮助。