java - 在 Java 中使用 java.util.Date 进行不同的时间转换
问题描述
我正在使用java.util.Date
Java中的类将以下代码用于纪元到时间的转换。
Long scheduledTime = 1602258300000L;
Date date = new Date(scheduledTime);
System.out.println("Date obj :" + date);
以下是在两个不同时区服务器上运行相同代码时的输出:
在 EDT 服务器上-
Date obj :Fri Oct 09 11:45:00 EDT 2020
在 IST 服务器上 -
Date obj :Fri Oct 09 21:15:00 IST 2020
为什么会这样?我只经过几毫秒。该数据应该在所有服务器上被视为 21:15。为什么 Date 类会更改数据?
请分享一段示例代码,以获取相同的时间数据,而不管服务器的时区如何。
解决方案
一个Date
对象代表一个特定的时刻,用自 Unix 纪元以来的给定毫秒数表示。
该toString()
方法将该时刻转换为基于默认时区的本地时间。这并不是说Date
值本身“有”一个时区——它只是toString()
使用了默认的时区。
该数据应该在所有服务器上被视为 21:15。
这表明您希望在所有服务器中使用印度时区,至少在转换即时时间以进行显示时。在不了解您的应用程序的任何其他信息的情况下,我们只能说......除了“不要使用java.util.Date
or java.util.Calendar
; 改用java.time
类”。它们的设计要好得多,而且您遇到此类问题的可能性较小。
推荐阅读
- unit-testing - EJS:测试包含的 ejs 文件
- javascript - SVG - 获取 SVG 中鼠标/触摸鼠标/单击/点击下出现的 ID 的有序列表
- javascript - 如何设置接受 RTMP 和/或 RTSP 流并使用 WebRTC 流式传输到客户端(浏览器)的直播 Node js 服务器?
- javascript - FCC Basic JavaScript:测试对象的属性
- anylogic - If-Else 功能在设置条件为真时将托盘存储到三个托盘架之一
- python - Selenium Python 脚本打印错误
- django - django rest框架传递标头的问题
- python - MPI Python输入函数,我的代码有问题
- html - 角度材料在 angular9 中无法正常工作
- jquery - 如何在 SpringBoot 应用程序中获取登录用户的 loginId 以实现更改密码功能