gpt4 book ai didi

Java - 防止浏览器重新本地化本地化日期

转载 作者:行者123 更新时间:2023-11-30 08:23:36 26 4
gpt4 key购买 nike

在我们的数据库中,我们有一列包含数据库的本地日期/时间(在本例中为美国/太平洋地区)。

在我们的服务中,我们的 DAO 模型将其存储为 java.util.Date 对象。我们的服务层模型将其存储为 DateTime 对象。这是一个例子

数据库:2014-04-20 23:22:27

Date date = daoModel.getDate();
System.out.println(Date.toString()); // Wed Apr 30 23:22:27 PDT 2014 (Correct)

// converting to service layer which clients will get
DateTime dateTime = new DateTime(date);
System.out.println(dateTime.toString()); // 2014-04-30T23:22:27.000-07:00 (I am running this on a JRE that is in US/Pacific)

然后在 javascript 中,我们使用 DateTime 对象中的字符串执行此操作:

        var formatDate = function(dateString){
if(dateString){
var date = new Date(Date.parse(dateString.trim()));
return twoDigits(date.getFullYear())+"-"+
twoDigits(date.getMonth()+1)+"-"+
twoDigits(date.getDate())+" "+
twoDigits(date.getHours())+":"+
twoDigits(date.getMinutes())+":"+
twoDigits(date.getSeconds());
}
return "";

}

位于美国/太平洋地区的浏览器中的输出是:2014-04-30 16:22:27因此,它又从已经本地化的时间中减去 7 小时。

那么对于日期字符串 2014-04-30T23:22:27.000-07:00,DateTime 类是否假定 2014-04-30T23:22:27.000 是 UTC,而 -07:00 是要获取的偏移量本地时间,还是假设 2014-04-30T23:22:27.000 实际上是本地时间,而 -07:00 只是表示与 UTC 的时区偏移量?

我希望在浏览器中输出的是存储在数据库中的本地日期,所以应该是

2014-04-30 23:22:27

但是当前的输出是

2014-04-30 16:22:27

我想了解为什么当它显示在浏览器中时,UTC 的偏移量是 -14:00 而不是美国/太平洋地区的 -7,以及如何解决这个问题。

最佳答案

任何时候你有 ISO-8601包含偏移量的时间戳,比如你问的值,"2014-04-30T23:22:27.000-07:00",时间代表本地时间,偏移量表示从本地时间表示的 UTC 的调整。

要返回 UTC,您需要反转偏移量的符号,并将其应用于本地时间值。

关于Java - 防止浏览器重新本地化本地化日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23551841/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com