javascript - JS Date() 对象的奇怪行为
问题描述
我想代表给定月份的第一天,比如 2020 年 9 月 1 日。当我在控制台中执行此操作时,我得到以下输出:
$ node
> new Date(2020, 8, 1)
2020-08-31T23:00:00.000Z
为什么它返回 2020-08-31 而不是 2020-08-01?我究竟做错了什么?
解决方案
输出
2020-08-31T23:00:00.000Z
是 ISO 格式,Z
显示日期为 UTC。当您调用Date
构造函数时,它默认使用您的浏览器时区,我可以假设它是+01:00
. 此外,构造函数中的月份索引是从零开始的。
如果您想要的是 UTC 的月初,您可以执行以下操作:
d = new Date(Date.UTC(2020, 8, 01))
d.toISOString()
"2020-09-01T00:00:00.000Z"
推荐阅读
- webauthn - 关于 FIDO2 webauthn 和 U2F 的几个开放性问题
- r - ry 不是季节性 ts 对象
- javascript - 自定义按钮仅在 HTML 列表中的第一个元素处起作用
- javascript - 从多行数据数组中获取 d3 Extent (Min/Max)
- memory-management - 如果选项 CONFIG_MIGRATION 被禁用,可能会出现什么问题?
- php - 显示 WooCommerce 自定义产品属性和单个产品的所有条款
- mysql - MySQL 按日期排序和布尔优先级:数字到日期的怪异
- vb.net - DateTimePicker:限制一天中的时间
- javascript - SignaturePad 将签名保存到服务器
- php - 免费送货基于 WooCommerce 中的最小购物车项目数