将年、月、日转换为 momentjs Unix 时间戳

Bac*_*ice 3 javascript timestamp date momentjs

我试图获得与1502755200000使用 momentjs相同的价值

console.log(Date.UTC(2017, (8-1), 15));//1502755200000

var newDate = moment();
newDate.set('year', 2017);
newDate.set('month', 7);  // April
newDate.set('date', 15);

console.log(newDate.format('X'));//1502818350
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试获得毫秒数时,我1502818350知道如何获得与上述完全相同的时间戳吗?

这是小提琴https://jsfiddle.net/cdvzoezb/1/

Aak*_*ain 5

首先,.format('X')以秒为单位为您提供 unix 时间戳,而不是毫秒。要获得毫秒,您必须使用.format('x')(小写 x)。

其次,当您使用 时moment(),它会为您提供当前本地时间的时刻日期对象,而不是 UTC 时间。因此,当您使用.set('date', 15)etc对其进行修改时,会将其设置为当地时间2017 年 4 月 15 日。这就是为什么你会得到截然不同的价值。

要获取当前 UTC 时间的时刻日期对象,请使用moment.utc().

第三,您创建的 Date 对象将在时间 00:00:00.000,而 moment 对象将位于当前时间。因此,当您设置年/月/日时,时间仍然保持在您创建对象时的状态。您需要将时刻对象的时间设置为 00:00:00.000。

这可以通过.startOf('day')函数来完成。

综上所述:

console.log(Date.UTC(2017, (8-1), 15)); //1502755200000

var newDate = moment.utc();
newDate.set('year', 2017);
newDate.set('month', 7);
newDate.set('date', 15);
newDate.startOf('day');

console.log(newDate.format('x')); //1502755200000
Run Code Online (Sandbox Code Playgroud)

或者,更短:

var newDate = moment.utc('2017-07-15 00:00:00.000');
Run Code Online (Sandbox Code Playgroud)