Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用toLocaleDateString时获得不同日期的原因是什么?_Javascript_Date - Fatal编程技术网

Javascript 使用toLocaleDateString时获得不同日期的原因是什么?

Javascript 使用toLocaleDateString时获得不同日期的原因是什么?,javascript,date,Javascript,Date,在查找对象数组中存在的节日时,以及尝试使用toLocaleDateString打印用户友好的消息时,我得到的节日日期比执行toLocaleDateString时少一天 请看下面的例子 施工日期=2020年12月25日; const[月、日、年]=日期/分割; const newDate=`${year}-${month}-${day}`; 康斯特假日=[ {庆祝:新年,日期:2020-12-31}, {庆祝:圣诞节,日期:2020-12-25}, {庆祝:…,日期:2020-12-24}, ]

在查找对象数组中存在的节日时,以及尝试使用toLocaleDateString打印用户友好的消息时,我得到的节日日期比执行toLocaleDateString时少一天

请看下面的例子

施工日期=2020年12月25日; const[月、日、年]=日期/分割; const newDate=`${year}-${month}-${day}`; 康斯特假日=[ {庆祝:新年,日期:2020-12-31}, {庆祝:圣诞节,日期:2020-12-25}, {庆祝:…,日期:2020-12-24}, ]; const holiday=holidays.findholiday=>holiday.date==newDate; 如果假日{ 康斯特{庆典,日期}=假日; 常量选项={ 月:长, 日期:2位, }; const localDate=new datedatedate.toLocaleDateStringen-US,选项; const message=`Date${Date}与Date${localDate}中的假日${calemption}一致。是否继续?`; console.logmessage;
} 这很可能是由于时区的原因。我想你的总部在美洲

当您使用Datestring创建日期时,它会使用UTC创建日期,但当您显示日期时,它会显示您自己时区中的日期,因此UTC/GMT以西的任何日期都会显示2020-12-25T00:00Z,即2020-12-24


此外,使用Date进行解析可能因实现而异,因此通常建议使用诸如Moment.js之类的库进行解析,并且还可以正确处理时区。

这很可能是由于时区造成的。我想你的总部在美洲

当您使用Datestring创建日期时,它会使用UTC创建日期,但当您显示日期时,它会显示您自己时区中的日期,因此UTC/GMT以西的任何日期都会显示2020-12-25T00:00Z,即2020-12-24


此外,使用Date进行解析在不同的实现中可能有所不同,因此通常建议使用诸如Moment.js之类的库来进行解析,并且还可以正确处理时区。

我认为问题是由于时区造成的。我得到了正确的输出。我的时区是IST。当我在浏览器中注册此代码时,它会正确打印日期2020-12-25与12月25日的圣诞节日期一致。你想继续吗?尝试使用newDate而不是date我在google中搜索了我的时区,得到了中央标准时间Phil我尝试了newDate而不是date new date newDate。toLocaleDateStringen-US,选项,但得到了相同的结果我认为问题是由时区引起的。我得到了正确的输出。我的时区是IST。当我在浏览器中注册此代码时,它会正确打印日期2020-12-25与12月25日的圣诞节日期一致。你想继续吗?尝试使用newDate而不是date我在google中搜索了我的时区,得到了中央标准时间Phil我尝试了newDate而不是date new date newDate。toLocaleDateStringen-US,选项,但我得到了相同的结果谢谢回答Jimmy。我将尝试一下MomentJS当您使用Datestring创建日期时,它主要使用UTC创建日期,编号2020-12-31被解析为UTC,但12/25/2020和许多其他格式都不是。@RobG,不,这是正确的,但对这些格式的支持也不是保证。而且,在我看来,tbh不应该被使用。2020年12月25日很容易,但如果说2020年10月11日,它的意思就不同了,这取决于你是在英国还是在美国,解析器不知道该使用哪一个。Date中唯一支持的格式是ISO-8601和RFC 2822。所有其他的都是由每个引擎和浏览器自己来解释的,由于模棱两可,一般不建议使用。感谢您的回答。我将尝试一下MomentJS当您使用Datestring创建日期时,它主要使用UTC创建日期,编号2020-12-31被解析为UTC,但12/25/2020和许多其他格式都不是。@RobG,不,这是正确的,但对这些格式的支持也不是保证。而且,在我看来,tbh不应该被使用。2020年12月25日很容易,但如果说2020年10月11日,它的意思就不同了,这取决于你是在英国还是在美国,解析器不知道该使用哪一个。Date中唯一支持的格式是ISO-8601和RFC 2822。所有其他的都由每个引擎和浏览器根据自己的喜好进行解释,并且由于不明确,通常不建议使用。