【问题标题】:Converting Year, Month, Day to momentjs Unix timestamp将年、月、日转换为 momentjs Unix 时间戳
【发布时间】:2017-09-20 17:37:33
【问题描述】:

我正在尝试使用 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/

【问题讨论】:

    标签: javascript date timestamp momentjs


    【解决方案1】:

    首先,.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');
    

    【讨论】:

    • 嘿 Aakash 感谢您的解释!我在小提琴jsfiddle.net/fuxmbga2 上运行了您的代码,但我仍然得到不同的时间戳。知道为什么吗?
    • 非常感谢Aakash的详细解答!
    • 甚至更短:moment('2017-08-15T00:00:00.000Z')。 ;-) 顺便说一句,Date 对象本质上是 UTC。 moment 对象可以具有用于计算和格式化的关联时区,但基础 Date 对象是 UTC。
    【解决方案2】:

    您可以简单地从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
    

    【讨论】:

    • 这没有回答问题。提问者想知道为什么他的moment 对象不会产生与等效的Date 相同的时间戳
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-06-16
    • 1970-01-01
    • 1970-01-01
    • 2020-10-19
    • 1970-01-01
    • 2014-04-30
    • 1970-01-01
    相关资源
    最近更新 更多