我在这里有个很奇怪的问题。根据我是否附加调试器,JS对new Date("6-1-2013")的评估是不同的。我正在运行一个反应本地应用程序在世博会。
这些是从我的代码中运行以下代码的结果:
console.log('new Date("6-1-2013"),', new Date("6-1-2013"));使用调试器:
new Date("6-1-2013"), 2013-06-01T04:00:00.000Z没有调试器:
new Date("6-1-2013"), Date { NaN }Update:将“2013年6月1日”传递给构造函数,不管是否使用调试器。所以我现在的问题是固定的。
我还是想知道为什么会以不同的方式发生。
发布于 2019-07-14 18:04:07
这是由不同的JavaScript环境造成的。看看docs 这里
JavaScript运行时 当使用Reacti原住民时,您将在两个环境中运行您的JavaScript代码:
虽然这两个环境非常相似,但您可能最终会遇到一些不一致的地方。我们将来可能会在其他JavaScript引擎上进行实验,所以最好避免依赖于任何运行时的细节。
问题是日期构造函数确实很挑剔,所以您需要注意如何创建日期。
一个流行的解决方法是使用moment.js。Moment.js将为您处理背景中的所有日期转换,它将在所有平台、javascript引擎等上工作。
安装moment.js时:
npm --install moment 然后你可以替换:
new Date("6-1-2013")通过以下方式:
import Moment from 'moment';
//second parameter is the specified format of your date string
const date = Moment("6-1-2013", "M-D-YYYY"); https://stackoverflow.com/questions/57029471
复制相似问题