首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用0来确定一个月的最后一天在全球范围内是行不通的

问使用0来确定一个月的最后一天在全球范围内是行不通的
EN

Stack Overflow用户
提问于 2022-10-27 11:30:31
回答 1查看 61关注 0票数 4

这个确定这个月最后一天的javascript方法对我来说不管用,他在乌克兰,但对我在美国的同事来说是有效的。我得到2022-10-30,我的同事得到2022-10-31。有什么问题吗?

​

代码语言:javascript
复制
var now = new Date();

const lastDayOfMonth = new Date(now.getFullYear(), now.getMonth() + 1, 0).toISOString().split('T')[0];

console.log(lastDayOfMonth)

​

我创建了一个代码库,我们得到了不同的结果:

С检查

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-10-27 11:39:09

是因为时区。new Date在本地时间中工作,但toISOString格式化日期/时间的UTC版本。您不希望混合UTC方法和本地方法,因为您将得到不一致的结果。在这种情况下,由于您领先于UTC,您在午夜的本地日期/时间是在UTC的前一天。但在美国,他们落后于世界协调时(而不是远远落后于他们有相反的问题),所以这对他们是有效的。

从UTC午夜开始,通过UTC方法开始,因此您始终使用单个时区:

​

代码语言:javascript
复制
const now = new Date();
const lastDayOfMonth = new Date(Date.UTC(now.getFullYear(), now.getMonth() + 1, 0))
    .toISOString()
    .split("T")[0];
console.log(lastDayOfMonth);

​

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74221361

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档