鉴于此代码......
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?
答案 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,它是对的。
我认为它会对你有帮助。