Unix 纪元时间转 Java Date 对象
我有一个包含 UNIX Epoch 时间 的字符串,我需要将其转换为 Java Date 对象。
String date = "1081157732";
DateFormat df = new SimpleDateFormat(""); // This line
try {
Date expiry = df.parse(date);
} catch (ParseException ex) {
ex.getStackTrace();
}
标记的线是我遇到麻烦的地方。 我无法弄清楚 SimpleDateFormat() 的参数应该是什么,或者即使我应该使用 SimpleDateFormat()。
I have a string containing the UNIX Epoch time, and I need to convert it to a Java Date object.
String date = "1081157732";
DateFormat df = new SimpleDateFormat(""); // This line
try {
Date expiry = df.parse(date);
} catch (ParseException ex) {
ex.getStackTrace();
}
The marked line is where I'm having trouble. I can't work out what the argument to SimpleDateFormat() should be, or even if I should be using SimpleDateFormat().
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
将秒时间戳转换为毫秒时间戳。 您可以使用 TimeUnit API 并像这样整洁。
long milliSecondTimeStamp = MILLISECONDS.convert(secondsTimeStamp, SECONDS)
To convert seconds time stamp to millisecond time stamp. You could use the TimeUnit API and neat like this.
long milliSecondTimeStamp = MILLISECONDS.convert(secondsTimeStamp, SECONDS)
嗯....如果我没记错的话,UNIX Epoch 时间实际上与
所以写作
应该有效(并且比日期解析快得多)
Hum.... if I am not mistaken, the UNIX Epoch time is actually the same thing as
So writing
should work (and be much faster that date parsing)
怎么样:
编辑:根据 rde6173 的答案并仔细查看问题中指定的输入,“ 1081157732”似乎是一个基于秒的纪元值,因此您需要将 parseLong() 中的 long 乘以 1000 以转换为毫秒,这是 Java 的 Date 构造函数使用的,因此:
How about just:
EDIT: as per rde6173's answer and taking a closer look at the input specified in the question , "1081157732" appears to be a seconds-based epoch value so you'd want to multiply the long from parseLong() by 1000 to convert to milliseconds, which is what Java's Date constructor uses, so:
Epoch 是自 1970 年 1 月 1 日以来的秒数。
因此:
有关更多信息:
http://www.epochconverter.com/
Epoch is the number of seconds since Jan 1, 1970..
So:
For more information:
http://www.epochconverter.com/
java.time
使用
java.time
框架内置于 Java 8 及更高版本。在这种情况下,您最好使用
ZonedDateTime
将其标记为 UTC 时区中的日期,因为纪元是在 UTC 中定义的Java 使用的 Unix 时间。
ZoneOffset
包含UTC 时区的方便常量,如上面最后一行所示。 它的超类ZoneId
可用于调整到其他时区。java.time
Using the
java.time
framework built into Java 8 and later.In this case you should better use
ZonedDateTime
to mark it as date in UTC time zone because Epoch is defined in UTC in Unix time used by Java.ZoneOffset
contains a handy constant for the UTC time zone, as seen in last line above. Its superclass,ZoneId
can be used to adjust into other time zones.