gpt4 book ai didi

Javascript Date 和 java.util.Date 构造函数参数

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:56:15 26 4
gpt4 key购买 nike

是的,另一个关于 Java 和 Javascript 中的日期的问题。

Java 和浏览器 (Chrome) 的时区均为 GMT+4(莫斯科)。

<script language="javascript">
var d = new Date(170798400000);
document.write(d);
</script>

给出:Sun Jun 01 1975 00:00:00 GMT+0400(俄罗斯标准时间)

public class Test {
public static void main(String[] args) {
java.util.Date d = new java.util.Date(170798400000L); // the same epoch value!
System.out.println(d);
}
}

给予:1975 年 5 月 31 日星期六 23:00:00 MSK

如果我将纪元值更改为 2011-2012 年(在俄罗斯取消夏令时之后),则输出正常。时区更新工具运行正常。

这是错误还是已记录的功能?除了像 YYYY-MM-dd HH:mm:SS 之类的格式和重新解析之外,有什么方法可以处理这个问题吗?

来自 javadoc:

日期(长日期)

分配一个 Date 对象并将其初始化以表示自称为“纪元”的标准基准时间(即格林威治标准时间 1970 年 1 月 1 日 00:00:00)以来指定的毫秒数。

来自 javascript 引用:

新日期(毫秒)

milliseconds - 表示自 1970 年 1 月 1 日 00:00:00 UTC(Unix 纪元)以来的毫秒数的整数值。

最佳答案

Is this a bug or documented feature?

这不是 Javascript 的错误。至少,我看不出我可以这么说。

浏览器的 Javascript 引擎正在返回转换为“GMT+4”的时间。显然,您想要的是 MSK,它与 GMT+4 不同(如您的评论中所述)。不知道 MSK 的 Javascript 不算是错误,而是缺少功能。也许 js 是“错误的”,因为没有那么详细的时区知识,但这不是错误。

Is there any way to handle this except formatting and re-parsing like YYYY-MM-dd HH:mm:SS or so?

跟踪时区的所有任意细节需要大量工作。我知道没有这样的代码库具有可用于 javascript 的所有工作。因此,我相信,是的,如果您想使用真正的 MSK,您将不得不自己手动编写该转换代码。

关于Javascript Date 和 java.util.Date 构造函数参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8913059/

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