不同时区的Java日历对同一时间给出不同的值

标签 java date calendar timezone

您好,在下面的代码中我得到的输出为 9 和 10,为什么会发生这种情况?尽管日历属于不同的时区,但我们还是通过相同的日期来设置时间。据我所知,时间是从纪元计算出来的相对值,所以无论什么时区,这个相对值应该是相同的

我的数据库位于一个时区而服务器位于另一个时区,我也面临类似的问题。

Date date = new Date ();
    Calendar c = Calendar.getInstance(TimeZone.getTimeZone("America/Los_Angeles"),Locale.US);
    Calendar c1 = Calendar.getInstance();
    c.setTime(date);
    c1.setTime(date);
    System.out.println(c.get(Calendar.HOUR));
    System.out.println(c1.get(Calendar.HOUR));

最佳答案

当您传入日期时,会采用其 UTC 时间戳(即自 1970 年 1 月 1 日以来的毫秒数,采用 GMT+0),然后将两个日历设置为同一时间,并询问现在是几点。

显然,不同时区的时间会有所不同 - 洛杉矶时区和运行代码的计算机的时区,即使它们已使用完全相同的 UTC 时间进行初始化。

关于不同时区的Java日历对同一时间给出不同的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15104868/

相关文章:

bash - 转换今天的 HH :MM am/pm to epoch in Bash

javascript - 回历(波斯历)对于 DwtCalendar.js

java - 如何在客户端的 Eclipse Milo 中处理断开连接/重新连接?

Java 嵌套类型场景

java - Java multi catch 中异常变量的类型是什么?

PHP 在 POST 之前重新格式化日期

java - 如何使用 servlet 响应填充下拉值

javascript - Python - 来自 Windows 机器的日期对象 - 时区问题

html - 如何在 Firefox 中隐藏 <input type ="date"> 的弹出日历?

c++ - 在编写日历时遇到问题,我无法在任何地方找到详细的指南来回答我的问题