gpt4 book ai didi

javascript - 根据 Firefox 中的区域设置格式化 "YYYY-MM-DD"日期字符串

转载 作者:行者123 更新时间:2023-11-29 23:43:12 25 4
gpt4 key购买 nike

我正在查看一个半旧的代码库,其中以下代码用于根据用户的区域设置以 YYYY-MM-DD 格式格式化日期:

new Date('2000-01-01').toLocaleDateString(navigator.language)

但是,这在 Firefox 中不起作用,因为 new Date('2000-01-01') 返回 UTC 日期时间(时间为 00:00),而 toLocaleDateString 使用用户的本地时区,因此上面的代码将为美国用户返回 “1999 年 12 月 31 日”

跨浏览器执行此操作的明智、安全的方法是什么?没有一个或多个额外的依赖项是否可行?

最佳答案

如果您向该日期字符串添加时间戳,它似乎是用本地时区的那个时间初始化的:

new Date('2000-01-01T00:00:00');

我在 Chrome 和 Firefox 中都试过了,它似乎可以正常工作。但是,应避免使用字符串创建日期,因为不能保证它在不同的浏览器中始终如一地工作。最好将日期分成几个部分,将其解析为数值并以这种方式初始化日期:

var dateParts = '2000-01-01'.split('-').map(Number);
new Date(
dateParts[0],
dateParts[1] - 1, // month is base 0
dateParts[2]
);

更新:事实证明,即使将时间戳附加到日期字符串,Safari 也会采用 UTC,因此这是解析它并使用数值初始化日期的另一个原因,因为它始终使用本地时区。

关于javascript - 根据 Firefox 中的区域设置格式化 "YYYY-MM-DD"日期字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44706224/

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