use*_*091 3 java linux ubuntu date epoch
我试图将以下日期时间字符串对象转换为unix epoch时间戳值.但是,当我运行该程序时,我注意到它生成了一个1404461110000的纪元值,当我检查我的ubuntu unix机器是在8月7日星期三18:06:40然而实际上我正在通过2014年7月4日04-07: 05:10.我的ubuntu机器上有美国/多伦多的时区,但我觉得这不重要吗?
Java代码:
long epoch = 0;
String str = "2014-07-04 04:05:10"; // UTC
DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date datenew = df.parse(str);
epoch = datenew.getTime();
System.out.println(epoch); // prints 1404461110000
Run Code Online (Sandbox Code Playgroud)
Ubuntu Linux 14.04
date -d@1404461110000
Run Code Online (Sandbox Code Playgroud)
显示= 8月7日星期三18:06:40 EDT 46475
问题是,在使用Java 调用时,您不会处理unix时间戳getTime().Unix时间戳以纪元为单位以秒表示,而您从Java获得的值是自纪元(1970年1月1日)以来的毫秒数,因此存在差异.
它必须是:
epoch = datenew.getTime() / 1000;
Run Code Online (Sandbox Code Playgroud)
这应该会让你至少接近10000年.如果在此之后仍然看到差异,则它与时区相关,并且可以通过在DateFormat实例上指定时区来适应.
| 归档时间: |
|
| 查看次数: |
5401 次 |
| 最近记录: |