Moment js:moment(0)= 1969年12月31日星期三?

Jin*_*Huh 0 javascript momentjs

我试图将日期设为空。因此,当我单击清除按钮时,我试图将它们全部设置为0。

 this.clear = function () {
            _this.newQuarters.forEach(function (_value, index) {
                _value.startDate = 0;
                _value.endDate = 0;
                _value.suppressAllocation = false;
                _value.quarters.forEach(function (_childValue, index) {
                    _childValue.startDate = 0;
                    _childValue.endDate = 0;
                    _childValue.suppressAllocation = false;
                });
            });
        };
    }
Run Code Online (Sandbox Code Playgroud)

在那之后,我试图从其他函数添加0。

 this.newQuarters.forEach(function (_value, index) {
            var startDate = moment(_value.startDate);
Run Code Online (Sandbox Code Playgroud)

但是,它将显示startDate = 1969年12月31日,星期三。请帮助我查找所有日期是否为空。

Nic*_*las 7

当将数字传递给moment()函数时,它将其解释为unix时间戳。
自EPOCH时间以来的秒数,即01-01-1970

因此,传递0给该函数的时间为1970年1月1日的第一秒。
正如Bergi所指出的,您可能会在本地时区显示日期,这可能会导致之前的时间01-01-1970

如果要创建一个无效日期,则应将其设置startDate为null并正确处理(使用if语句)。

您也可以通过不向moment()函数传递参数来将日期设置回当前时间。

  • “ *结果在1970年1月1日之前的第二个*”-实际上是在1970年1月1日的第一秒中产生的。如果要获取前一天,通常是因为您在当地时区显示了该时刻。 (2认同)