如果我执行此操作:
var date = new Date("10.31");
date.setFullYear(-125);
date
的输出为Sun Oct 31 -125 00:00:00 GMT+0200 (W. Europe Summer Time)
如果我在wolframalpha上查看,那么这一天似乎是星期二。
有人可以解释为什么两个来源都没有显示同一天?
答案 0 :(得分:1)
JavaScript与wolframalpha网站之间存在差异的原因是JavaScript以数学方式计算年份,因此它包括零年份。尝试在JavaScript中将年份设置为零,您将看到它的工作原理。但是,没有像零年这样的东西,而前一年的年份是公元前1年。尝试在wolframalpha网站上将年份设置为零并且您会收到错误,同时它会自动将所有负数转换为BC年。这是正确的行为。
要在JavaScript中获得BC年,每年在1以下添加1.因此,0年变为1BC,年-125变为126BC。在JavaScript中,这给你周日,在wolframalpha网站上的126BC给你周日。 125BC给你周二wolframalpha网站,-124给你相同的JavaScript。
var date = new Date();
date.setFullYear(-124);
date.setMonth(9);
date.setDate(31);
console.log(date.toString());
date.setFullYear(-125);
console.log(date.toString());
答案 1 :(得分:0)
Javascript日期始于1970年。
让我们快速计算一下。
(new Date()).setYear(-125); //returns -66085584766591 (milliseconds from time 0)
//Let's convert those milliseconds in years...
//-66085584766591 = -2095,56 (years???)
如您所见,您不能依赖Javascript中的否定日期。
答案 2 :(得分:0)
javascript中的负面年份会产生BC日期,但它的设计很差。 Wolfram Alpha可能是正确的。有关详情,请参阅此答案:Why does Date accept negative values?