momentjs startOf 不适用于现有的日期对象

jhi*_*den 3 momentjs

我正在尝试使用时刻来开始新的一天。我得到以下不同的结果:

moment().startOf('day'); //good
moment(new Date()).startOf('day'); //this does not work!
Run Code Online (Sandbox Code Playgroud)

小提琴:https : //jsfiddle.net/y1of77wx/

实际情况是我在一个将日期对象作为参数的函数中执行此操作:

function doWork(dt) {
   return moment(dt).startOf('day');
}
Run Code Online (Sandbox Code Playgroud)

我确定解决方案很简单,但我只是遗漏了一些东西。

Vin*_*zoC 5

我建议使用format()来显示一个 moment 对象的值。

正如内部属性指南所述:

Moment 对象有几个以 为前缀的内部属性_

最常查看的内部属性是_d保存 Moment 包装器的 JavaScript 日期的属性。通常,开发人员对_d.值的控制台输出感到困惑。

...

要打印出 Moment 的值,请使用.format(),.toString().toISOString()

这是一个显示正确结果的片段:

console.log(moment().startOf('day').format());
console.log(moment(new Date()).startOf('day').format());
Run Code Online (Sandbox Code Playgroud)
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.18.1/moment.min.js"></script>
Run Code Online (Sandbox Code Playgroud)

  • 有趣的是,它可以正常工作,但显示错误。如果我记录 unix 时间戳,我确实可以看到它发生了变化。 (4认同)