• 国际化项目开发中关于时间的问题一


    一、时间、时区、时间戳、UTC这些概念和关系

    时间戳:不区分时区,表示自1970年1月1日00:00:00 UTC以来的秒数或毫秒数。
    时间与时区关系:时区决定了本地时间与UTC时间的偏移量。本地时间 = UTC时间 + 时区偏移
    时区转换1:时间是分时区的,如果把【时间戳】转【时间】,需要把时区加进去,同理,【时间】转【时间戳】时,也需要把时区加进去
    时区转换2:将时间戳转换为可读时间时,需要考虑时区,以便正确显示本地时间。
    Java处理:使用Instant、ZonedDateTime和DateTimeFormatter等类,可以方便地进行时间戳与时区之间的转换

    二、代码案例
    1. import java.time.Instant;
    2. import java.time.LocalDateTime;
    3. import java.time.ZoneId;
    4. import java.time.ZonedDateTime;
    5. import java.time.format.DateTimeFormatter;
    6. public class TimezoneConversionExample {
    7. public static void main(String[] args) {
    8. // 步骤1:生成东八区(北京时间)晚上九点的时间
    9. ZoneId beijingZone = ZoneId.of("Asia/Shanghai");
    10. LocalDateTime localDateTime = LocalDateTime.of(2023, 6, 1, 21, 0); // 2023年6月1日21:00
    11. ZonedDateTime beijingTime = ZonedDateTime.of(localDateTime, beijingZone);
    12. // 格式化输出东八区时间
    13. DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss Z");
    14. System.out.println("东八区时间: " + beijingTime.format(formatter));
    15. // 步骤2:将这个时间转换为时间戳
    16. Instant timestamp = beijingTime.toInstant();
    17. System.out.println("时间戳: " + timestamp.getEpochSecond());
    18. // 步骤3:将这个时间戳转换为东十区时间
    19. ZoneId tokyoZone = ZoneId.of("Asia/Tokyo");
    20. ZonedDateTime tokyoTime = timestamp.atZone(tokyoZone);
    21. System.out.println("东十区时间: " + tokyoTime.format(formatter));
    22. }
    23. }

    打印如下

    1. 东八区时间: 2023-06-01 21:00:00 +0800
    2. 时间戳: 1685632800
    3. 东十区时间: 2023-06-01 22:00:00 +1000


    在上述代码中,我们生成了东八区晚上九点的时间,然后转换为时间戳,最后将这个时间戳转换为东十区的时间。这样,可以确保时间在不同的时区间正确转换和表示

    国际化项目开发中关于时间的问题二-CSDN博客

  • 相关阅读:
    关于git创建分支以及主分支相互合并操作记录
    LSTM和GRU
    python使用蓝牙库选择
    AI来实现代码转换!Python转Java,Java转Go不在话下?
    搜索与图论——Prim算法求最小生成树
    计算属性全选反选
    角色妆容的实现
    JAVA设计模式第十讲:SPI - 业务差异解决方案
    vite — 超快且方便的编译工具
    经典文献阅读之--SuMa++
  • 原文地址:https://blog.csdn.net/ffyyhh995511/article/details/139743017