【问题标题】:Convert UTC milliseconds to browser's time using moment.local() and moment.toDate() is not accurate使用 moment.local() 将 UTC 毫秒转换为浏览器的时间,而 moment.toDate() 不准确
【发布时间】:2017-02-06 10:38:39
【问题描述】:
var utcMilliSeconds = 1486116995814;
// UTC time:03/02/2017 10:16:35 (From epoch Converter)
// IST time:03/02/2017, 15:46:35 (From epoch converter) 

moment.utc(1486116995814).local().format("DD/MM/YYYY HH:MM:ss"); //IST time:03/02/2017 15:02:35  but it's wrong

moment.utc(1486116995814).toDate(); //Fri Feb 03 2017 15:46:35 GMT+0530 (India Standard Time) 

toDate() 给出正确的时间,但我不想使用 toDate(),因为 JavaScript 日期格式不灵活。

moment.local() 有什么问题,为什么它没有给出准确的时间,有没有简单的方法将 UTC 毫秒转换为浏览器的时间而不使用任何其他库?

【问题讨论】:

    标签: javascript momentjs


    【解决方案1】:

    您正在使用大写的 MM 而不是小写的 mm 来格式化分钟。见formatting docsMM 代表月,mm 代表分钟。

    这是一个工作示例:

    var s = moment.utc(1486116995814).local().format("DD/MM/YYYY HH:mm:ss");
    console.log(s);
    <script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.17.1/moment.min.js"></script>

    【讨论】:

    • 非常感谢,这是我的错。使用 moment 肯定会在所有时区使用日光节约它不会造成任何问题?你能确认一下吗?
    • 我确认无论时区如何,共享的代码都可以正常工作。 Moment 可以处理 UTC 和本地时间之间的时间转换,如果需要在时区之间转换可以使用moment-timezone
    【解决方案2】:

    我尝试过这种方式并且可以正常工作

    var timeInUTCMiliSecond = 1641367170421
    let ConvertedTime = moment.unix(timeInUTCMiliSecond / 1000).format("hh:mm")
    consol.log(ConvertedTime)
    

    或者你想要的任何格式

    【讨论】:

    • 虽然这段代码 sn-p 可以解决问题,但它没有解释为什么或如何回答这个问题。请include an explanation for your code,因为这确实有助于提高您的帖子质量。请记住,您是在为将来的读者回答问题,而这些人可能不知道您提出代码建议的原因。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-19
    • 2017-11-07
    • 2018-06-02
    • 1970-01-01
    • 2020-12-04
    • 2017-04-25
    相关资源
    最近更新 更多