首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >转换日期到单个时区

转换日期到单个时区
EN

Stack Overflow用户
提问于 2018-05-07 13:27:21
回答 3查看 131关注 0票数 0

我有两个作为毫秒的时间戳,它们是在不同的时区中创建的,不能转换为相同的时区。

代码语言:javascript
运行
复制
Date_1 = 1525694035615 - Mon May 07 2018 11:53:55

Date_2 = 1525686835730 - Mon May 07 2018 09:53:55

有没有人知道如何在UTC+0中识别时区和获取值?

当我转换这些时间戳时,总是得到这些时间戳具有时区+0的值。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-05-07 15:51:08

有没有人知道如何…?在UTC+0中获取值吗?

我首先要做的是:

代码语言:javascript
运行
复制
    OffsetDateTime dateTime = Instant.ofEpochMilli(1_525_694_035_615L)
            .atOffset(ZoneOffset.UTC);
    System.out.println(dateTime);

这些指纹:

2018-05-07T11:53:55.615Z

这与你在问题中所说的一致。Z在结尾的意思是UTC。

…如何识别时区…

我们不太可能。如果您知道时间戳在产生时间戳的时区对应的时间,我们可以计算偏移量。当答案是UTC时,这是相当无聊的,所以我举一个不同的例子:

代码语言:javascript
运行
复制
    long timestamp = 1_525_708_128_067L;
    LocalDateTime dateTimeInUnknownTimezone = LocalDateTime.of(2018, Month.MAY, 7, 18, 48, 48);

    LocalDateTime utcDateTime = Instant.ofEpochMilli(timestamp)
            .atOffset(ZoneOffset.UTC)
            .toLocalDateTime()
            .truncatedTo(ChronoUnit.SECONDS);

    int offsetInSeconds = (int) ChronoUnit.SECONDS.between(utcDateTime, dateTimeInUnknownTimezone);
    ZoneOffset offset = ZoneOffset.ofTotalSeconds(offsetInSeconds);
    System.out.println(offset);

+03:00

由于日期-时间只有秒的精度,我也截断UTC的时间到秒,以获得偏移的精确。但是,从+03:00的偏移量中,我们无法明确地确定时区,因为许多时区使用此偏移量。

票数 1
EN

Stack Overflow用户

发布于 2018-05-07 13:54:19

如果您用Java创建的毫秒时间戳是,则始终是的毫秒

1970年1月1日午夜协调世界时

也没有时区的东西。

你所看到的:

2018年5月7日星期一11:53:55 2018年5月7日星期一09:53:55

仅用字符串表示当前JVM/计算机时区中的时间中的那些时刻

如果您需要在UTC时区中有一个字符串表示形式,那么有很多类可以这样做。在所有JDK中都有日历实现(例如GregorianCalendar)。Java 8中有来自Joda time的新API。

在处理时区时,它应该能更好地工作。

票数 3
EN

Stack Overflow用户

发布于 2018-05-07 13:30:08

如果您获得timezone+0,这是因为这是默认的时区,给定任意数量的固定时间(在您的示例中为毫秒)。如果你想要一个不同的时区UTC+0,你必须告诉它你在哪个时区。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50215424

复制
相关文章

相似问题

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