我正在尝试使用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
知道如何获得与上面完全相同的时间戳吗?
答案 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