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

使用 UTC 将毫秒转换为时间戳

使用 UTC 将毫秒转换为时间戳

慕田峪9158850 2023-06-21 13:17:51
我正在尝试使用时区 UTC 将毫秒转换为时间戳,但它无法按预期工作,因为它转换为我的本地日期时间。我尝试过以下。在调试代码时,我发现执行此命令时:new DateTime(eventDate)它工作正常,因为它的值是10:34:18.721,但后来 new Timestamp() 将其更改为 localdatetime。long eventDate = 1566297258721L;DateTimeZone.setDefault(DateTimeZone.UTC);Timestamp timestamp = new Timestamp(new DateTime(eventDate).getMillis());我期望输出为:2019-08-20 10:34:18.721 但实际输出为:2019-08-20 12:34:18.721
查看完整描述

3 回答

?
犯罪嫌疑人X

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

您可以使用Java 8及更高版本的java.time包:

ZonedDateTime zonedDateTime = Instant.ofEpochMilli(1566817891743L).atZone(ZoneOffset.UTC);



查看完整回答
反对 回复 2023-06-21
?
一只名叫tom的猫

TA贡献1906条经验 获得超3个赞

我不明白为什么你要创建一个新的 DateTime,然后从那里获取毫秒(如果你一开始就已经有毫秒了)。也许我误解了你的问题。毫秒与时区无关。时区用于比较两个不同地点的同一时刻并获取各自的日期。这是我的解决方案


如果你想要一个毫秒的时间戳:

long eventDate = 1566297258721L;

Timestamp time=new Timestamp(eventDate);

System.out.println(time);

结果将是2019-08-20 10:34:18.721,也是希望的 SQL 格式


如果您想将某个时刻从一个时区转换为另一个时区:

您将获得实际时区的时刻,并将其转换为不同的时区,以便查看其他国家/地区的时间


long eventDate = 1566297258721L;

Calendar calendar = Calendar.getInstance();

calendar.setTime(eventDate);

SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");

dateFormat.setTimeZone(TimeZone.getTimeZone("UTC"));

dateFormat.format(calendar.getTime());

我希望这些片段有用。快乐编程!


查看完整回答
反对 回复 2023-06-21
?
慕标5832272

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

您可以尝试以下操作,


long eventDate = 1566297258721L;

SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss z", Locale.US);

simpleDateFormat.setTimeZone(TimeZone.getTimeZone("UTC"));

String stringDate = simpleDateFormat.format(new Date(eventDate));

System.out.println(stringDate);

它给了我以下输出。


2019-08-20 10:34:18 协调世界时


查看完整回答
反对 回复 2023-06-21
  • 3 回答
  • 0 关注
  • 363 浏览

添加回答

举报

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