为了账号安全,请及时绑定邮箱和手机立即绑定

Unix纪录时间到Java Date对象

Unix纪录时间到Java Date对象

胡子哥哥 2019-07-30 16:09:03
Unix纪录时间到Java Date对象我有一个包含UNIX Epoch时间的字符串,我需要将其转换为Java Date对象。String date = "1081157732";DateFormat df = new SimpleDateFormat(""); // This linetry {   Date expiry = df.parse(date);  } catch (ParseException ex) {   ex.getStackTrace();}标记的线是我遇到麻烦的地方。我无法弄清楚SimpleDateFormat()的参数应该是什么,或者即使我应该使用SimpleDateFormat()。
查看完整描述

3 回答

?
蝴蝶不菲

TA贡献1810条经验 获得超4个赞

怎么样:

Date expiry = new Date(Long.parseLong(date));

编辑:根据rde6173的回答并仔细查看问题中指定的输入,“1081157732”似乎是一个基于秒的纪元值,所以你想要将long从parseLong()乘以1000来转换到毫秒,这是Java的Date构造函数使用的,所以:

Date expiry = new Date(Long.parseLong(date) * 1000);


查看完整回答
反对 回复 2019-07-30
?
繁星淼淼

TA贡献1775条经验 获得超11个赞

java.time

使用java.timeJava 8及更高版本中内置的框架。

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时区中的日期,因为Epoch是在Java使用的Unix时间内以UTC定义的。

ZoneOffset包含UTC时区的便捷常量,如上面的最后一行所示。它的超类,ZoneId可用于调整到其他时区。

ZoneId zoneId = ZoneId.of( "America/Montreal" );


查看完整回答
反对 回复 2019-07-30
  • 3 回答
  • 0 关注
  • 372 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信