如何解决如果执行新的Date0L,则纪元不是纪元为什么?
该大纪元定义为00:00:00 1970-1-1上UTC。由于CET 是UTC + 1,所以相当于您的时间是1AM。
如果查看Date(long)构造函数,您会看到它期望该值是自纪元UTC以来的毫秒数:
分配一个Date对象,并将其初始化为表示自标准基准时间(即“纪元”)以来的指定毫秒数,即标准时间1970年1月1日,格林尼治标准时间00:00:00。
关于您要强制使用GMT而不是本地时区:简而言之,Date实例 始终 使用GMT。如果只想格式化输出字符串以使其使用GMT,则可以使用DateFormat类,尤其是其setTimeZone()方法。
解决方法
我的问题很清楚解释:
如果我这样做:
public class Main {
public static void main(String[] args) throws Exception {
Date d = new Date(0L );
System.out.println(d);
}
}
我得到以下输出:1970年1月1日星期四01:00:00
根据文档,我期望:1970年1月1日星期四00:00:00 CET
我想错了…
编辑:的确,我读文档太快了。1970年1月1日星期四00:00:00我应该有
那么,如何强制使用GMT并忽略所有本地时间?
编辑,解决方案:
public static void main(String[] args) throws Exception {
SimpleDateFormat sdf = new SimpleDateFormat("H:m:s:S");
SimpleTimeZone tz = new SimpleTimeZone(0,"ID");
sdf.setTimeZone(tz) ;
Date d = new Date(0L );
System.out.println( sdf.format(d));
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。