根据这个代码..。
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?
发布于 2013-03-12 19:17:12
您不能仅使用java.util.Date来存储时间。它将指定1970年,这在某些情况下是不正确的。我建议使用org.joda.time.LocalTime。
发布于 2013-03-12 19:03:58
日光节约也要考虑在内。这应该会给你你所期望的
sdf.setTimeZone(TimeZone.getTimeZone("EST5EDT"));
发布于 2013-03-12 20:47:07
如果您不提供任何日期部分,默认情况下,它将被分配默认的Epoche standard date(01 Jan 1970 00:00 Hours称为Epoche standard time,并将其作为标准来度量所有与时间相关的计算(作为基准时间)。
java.util.Date类的getTime()方法返回给定date(including time also)和Epoche standard( 01 Jan 1970 00:00 Hours)之间的总毫秒数。尽管您没有使用getTime()方法,因此它在这里无关紧要。所以,简单地说,你得到的是时间。根据格林尼治标准时间的说法,这是正确的。
我想这会对你有帮助的。
https://stackoverflow.com/questions/15359096
复制相似问题