Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/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 最短和最长日期_Javascript_Datetime_Max - Fatal编程技术网

Javascript 最短和最长日期

Javascript 最短和最长日期,javascript,datetime,max,Javascript,Datetime,Max,我想知道Javascriptdate对象允许的最小和最大日期是哪一个。我发现最短的日期大约是公元前200000年,但我找不到任何关于它的参考资料 有人知道答案吗?我只是希望它不依赖于浏览器 以“大纪元时间”(=1970-01-01 00:00:00 UTC+00的毫秒)为单位的答案最好。来源: 日期对象包含一个数字,表示在一毫秒内的某个特定时间点。这样的数字称为时间值。时间值也可以是NaN,表示日期对象不表示特定的时间瞬间 自UTC 1970年1月1日起,时间以ECMAScript为单位,以毫秒

我想知道Javascript
date
对象允许的最小和最大日期是哪一个。我发现最短的日期大约是公元前200000年,但我找不到任何关于它的参考资料

有人知道答案吗?我只是希望它不依赖于浏览器

以“大纪元时间”(=1970-01-01 00:00:00 UTC+00的毫秒)为单位的答案最好。

来源:

日期对象包含一个数字,表示在一毫秒内的某个特定时间点。这样的数字称为时间值。时间值也可以是NaN,表示日期对象不表示特定的时间瞬间

自UTC 1970年1月1日起,时间以ECMAScript为单位,以毫秒为单位。时间值中的闰秒将被忽略。假设每天正好有86400000毫秒。ECMAScript数值可以表示–9007199254740992到9007199254740992之间的所有整数;该范围足以测量自1970年1月1日UTC起大约285616年(向前或向后)内任何瞬间的毫秒精度时间

ECMAScript日期对象支持的实际时间范围稍微小一些:确切地说是–100000000天到100000000天,相对于UTC 1970年1月1日开始时的午夜测量。这使UTC 1970年1月1日任一侧的范围为8640000000000000毫秒

UTC 1970年1月1日凌晨的确切时刻由值+0表示


第三段是最相关的。根据该段,我们可以从
新日期(-8640000000000000)
(即公元前271821年4月20日星期二(BCE=公元前271821年)获得每个规范的准确最早日期。

为了增加T.J.的答案,超过最小/最大值会生成无效日期

设maxDate=新日期(8640000000000000);
让minDate=新日期(-8640000000000000);
log(新日期(maxDate.getTime()).toString());
log(新日期(maxDate.getTime()-1.toString());
console.log(新日期(maxDate.getTime()+1.toString());//无效日期
log(新日期(minDate.getTime()).toString());
log(新日期(minDate.getTime()+1.toString());

console.log(新日期(minDate.getTime()-1.toString());//无效日期
如您所见,1970年1月1日返回0,这意味着这是可能的最低日期

new Date('1970-01-01Z00:00:00:000') //returns Thu Jan 01 1970 01:00:00 GMT+0100 (Central European Standard Time)
new Date('1970-01-01Z00:00:00:000').getTime() //returns 0
new Date('1970-01-01Z00:00:00:001').getTime() //returns 1

对已接受答案的一小部分更正;最小日期的年份实际上是271,822BCE,运行以下代码段时可以看到:


console.log(新日期(-8640000000000000).toLocaleString(“en”,{“year”:“numeric”,“era”:“short”}))
这激发了一个类似于.net的isMin-isMax字段。。。这就是为什么它不能与-9223372036854775808L一起工作。。。即使我将其更改为日期,resever返回的值仍超出范围。我不知道人们在抱怨什么,这对我来说很好。顺便说一句,我想知道是否有相反的方法(即输入BCE日期并将历元秒作为负整数弹出)?@MarkSeagoe-
date.UTC(-271821,3,20)
返回
-8640000000000000
:-)复制/粘贴的新日期('275760-9-13 05:30:00')答案:你的答案有什么意义?它如何回答最初的问题?1970年1月1日并不是可能的最低日期。您可以传递负数以获得1970年1月1日之前的日期。您在技术上是正确的。最好的一种是正确的。