首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Unix纪元时间到Java Date对象

Unix纪元时间到Java Date对象
EN

Stack Overflow用户
提问于 2009-02-11 00:53:02
回答 6查看 172.3K关注 0票数 97

我有一个包含UNIX Epoch time的字符串,需要将其转换为Java Date对象。

代码语言:javascript
复制
String date = "1081157732";
DateFormat df = new SimpleDateFormat(""); // This line
try {
  Date expiry = df.parse(date);
 } catch (ParseException ex) {
  ex.getStackTrace();
}

标记的行就是我遇到问题的地方。我不知道SimpleDateFormat()的参数应该是什么,或者我是否应该使用SimpleDateFormat()。

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2009-02-11 00:57:32

不如这样吧:

代码语言:javascript
复制
Date expiry = new Date(Long.parseLong(date));

编辑:根据rde6173的回答并仔细查看问题中指定的输入,"1081157732“似乎是一个基于秒的纪元值,因此您需要将parseLong()中的long乘以1000以转换为毫秒,这是Java构造函数使用的,因此:

代码语言:javascript
复制
Date expiry = new Date(Long.parseLong(date) * 1000);
票数 141
EN

Stack Overflow用户

发布于 2015-12-24 05:43:09

java.time

使用Java8和更高版本中内置的java.time框架。

代码语言:javascript
复制
import java.time.LocalDateTime;
import java.time.Instant;
import java.time.ZoneId;

long epoch = Long.parseLong("1081157732");
Instant instant = Instant.ofEpochSecond(epoch);
ZonedDateTime.ofInstant(instant, ZoneOffset.UTC); # ZonedDateTime = 2004-04-05T09:35:32Z[UTC]

在这种情况下,您最好使用ZonedDateTime将其标记为UTC时区中的日期,因为在Unix time中,纪元是在Java中定义的。

ZoneOffset包含一个用于协调世界时时区的方便的常量,如上面最后一行所示。它的超类ZoneId可以用来调整到其他时区。

代码语言:javascript
复制
ZoneId zoneId = ZoneId.of( "America/Montreal" );
票数 26
EN

Stack Overflow用户

发布于 2009-02-11 00:56:24

代码语言:javascript
复制
long timestamp = Long.parseLong(date)
Date expiry = new Date(timestamp * 1000)
票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/535004

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档