将Year,Month,Day转换为momentjs Unix时间戳

时间:2017-09-20 17:37:33

标签: javascript date timestamp momentjs

我正在尝试使用momentjs

获得与1502755200000相同的值
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

然而,当我尝试获得毫秒时,我得到1502818350知道如何获得与上面完全相同的时间戳吗?

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

2 个答案:

答案 0 :(得分:3)

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

其次,当您使用moment()时,它会在您当前的本地时间,而不是UTC时间为您提供时刻约会对象。因此,当您使用.set('date', 15)等修改它时,您将在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

或者更短:

var newDate = moment.utc('2017-07-15 00:00:00.000');

答案 1 :(得分:0)

您可以简单地从Date实例创建一个时刻对象,然后使用utc()将时间戳转换为UTC。之后,我们可以使用moment方法format()来使用x显示选项获取毫秒数,如下所示:

console.log("==============");
console.log(Date.UTC(2017, (8-1), 15));
var base = Date.UTC(2017, (8-1), 15)
var newDate = moment(base);

console.log('a', newDate.utc().format('x')); //1502755200000