【问题标题】:convert milliseconds to AM and PM date format将毫秒转换为 AM 和 PM 日期格式
【发布时间】:2016-02-25 11:59:16
【问题描述】:

我将TIMESTAMP 存储在数据库中,当我从数据库中取回它时,我想将其转换为 AM 和 PM 日期格式。

 var dbDate = moment(milliseconds); // **i am getting an error over here** 
 var data = dbDate.format("hh:mm:A").split(":");

但我收到以下错误moment(milliseconds);

“弃用警告:时刻构造回退到 js 日期。这个 不鼓励使用,并将在即将发布的主要版本中删除。请 更多信息请参考https://github.com/moment/moment/issues/1407

【问题讨论】:

    标签: javascript momentjs


    【解决方案1】:

    我对 moment.js 不是很熟悉,但快速浏览一下文档,我认为构造函数不支持毫秒参数。试试这个:

    var dbDate = moment({milliseconds: milliseconds});
    

    编辑

    上面的代码可能只是将其视为秒中小数点后的值 - 如果是这样试试这个:

    var dbDate = moment(new Date(milliseconds));
    

    【讨论】:

    • 此代码返回无效日期var dbDate = moment(new Date(milliseconds)); dbDate.format("hh:mm:A").split(":");
    • milliseconds的值是多少?
    • 请注意弃用警告:"弃用警告:时刻构造回退到 js 日期" 因此,通过显式调用 new Date,您正在做的正是那个时刻试图警告你不要这样做。
    • 我阅读了更多文档,但我错了 - 时刻确实(声称)支持 milliseconds 参数。 @JamesThorpe,我认为它警告的是隐式回退到使用Date,并且明确使用它是可以的。
    • 看起来你的毫秒是一个字符串,它需要是一个数字。试试var dbDate = moment(parseInt(milliseconds));
    【解决方案2】:

    默认情况下,矩库仅支持构造函数中有限数量的格式。如果您不使用其中一种格式,则默认使用new Date,其中browsers are free to interpret the given date how they choose 除非它符合某些条件。

    弃用警告用于警告您这种行为 - 这不一定是错误。

    在你的情况下,你有毫秒,所以你可以使用moment constructor that has a format parameter,告诉它你具体以毫秒为单位传递:

    var dbDate = moment(milliseconds, 'x');
    

    所有这些都假设您当前将milliseconds 作为字符串返回到您的 JavaScript 层。如果您将其返回并将其视为数字,则不应看到该警告,因为 moment 也有一个 specific constructor that takes a single Number,如果您的 milliseconds 参数是数字,则应该已经使用了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-03-19
      • 2020-11-12
      • 2012-06-05
      • 2019-10-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多