gpt4 book ai didi

JavaScript 日期 : a nightmare

转载 作者:行者123 更新时间:2023-11-28 14:24:57 33 4
gpt4 key购买 nike

我知道在任何环境中处理日期都可能会非常令人困惑,但我正处于一场噩梦中,这个函数本应该是一项微不足道的工作。我想以不同的方式操作某些日期,但出现错误或错误的结果。
下面我将报告一个非常简单的例子来测试执行情况;这里的目标是获取当前月份的开始日期,只是为了显示发生的情况:

function DateAdjust() {
var newdate = new Date(); //1: 2018-12-12T21:00:20.099Z
newdate = newdate.setDate(1); //2: 1543698020099
newdate=Date(newdate); //3: Wed Dec 12 2018 21:01:43 GMT+0000 (Ora standard dell’Europa occidentale)
var d = newdate.getDate(); //4: newdate.getDate is not a function

}

4 行,3 个意外结果(如 Firefox 调试器所示):
1.开始日期没有星期几和时区
2.设置日期,结果以毫秒为单位转换(为什么?);不知道是否正确。
3.在字符串中重新转换给出原始日期,未修改(为什么?)但带有工作日和时区
4.尝试获取日期值时抛出错误(为什么?)

我的环境:
Win 7 32 位 SP1
火狐浏览器 63.0.3(32 位)
jquery-2.2.4.min.js

我知道这些问题很无聊,但希望有人能抽出几分钟时间来理清我的思绪。

最佳答案

关于第 1 行,末尾的 Z 是 ISO 8601 中 UTC 的时区名称(请参阅 Wikipedia )。

If the time is in UTC, add a Z directly after the time without a space. Z is the zone designator for the zero UTC offset. "09:30 UTC" is therefore represented as "09:30Z" or "0930Z". "14:45:15 UTC" would be "14:45:15Z" or "144515Z".

关于第 2 行,请参阅 MDN关于 setDate 的文章(重点是我的):

The number of milliseconds between 1 January 1970 00:00:00 UTC and the given date (the Date object is also changed in place).

因此,您只需忽略返回值就可以看到您可能期望的“正确”行为:

var newdate = new Date(); //1: 2018-12-12T21:00:20.099Z
newdate.setDate(1); //2: 1543698020099
console.log(newdate); //3: 2018-12-01T21:00:20.099Z

关于第3行,请参见MDN关于日期的文章(强调我的):

Note: JavaScript Date objects can only be instantiated by calling JavaScript Date as a constructor: calling it as a regular function (i.e. without the new operator) will return a string rather than a Date object; unlike other JavaScript object types, JavaScript Date objects have no literal syntax.

关于第 4 行,上面也解释了这个错误,因为 newdate 现在是一个字符串而不是 Date 对象。

<小时/>

就其值(value)而言,我同意其他评论者的观点。与许多其他现代语言相比,JavaScript 的日期函数相当困惑。我强烈建议使用像 moment 这样的库, luxon ,或date-fns 。这将使您的生活变得更加轻松。

关于JavaScript 日期 : a nightmare,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53750989/

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