【问题标题】:moment.js cannot parse date correctlymoment.js 无法正确解析日期
【发布时间】:2018-03-06 01:27:05
【问题描述】:

感谢阅读,我得到了一个从 sharepoint 返回的日期为 '10/2/2000 12:00:00 AM' 这不适用于 moment.js 和语言环境,因此我将其重新解析为 ISOString,现在数据 '2000-10-01T22:00:00.000Z' 为指定为:https://github.com/moment/moment/issues/1407。但是它仍然会回退到标准的 javascript Date 函数,我不知道为什么。

下面是我的代码实现:

momentJs 中的解析代码

function dayAndFullMonth(dateTime, timezone) {
    return moment.tz(dateTime, timezone).format('DD MMM');
}

负责改写日期的函数

function rewriteDates()
{
    var endPartArray = 0;
    for(var i = 0; i< vm.birthdays.length; i++)
    {
        var birthday = sharepointservice.getProperty(vm.birthdays[i].Cells, 'Birthday');
        console.log(birthday);
        var cleanBirthday = new Date(birthday.split(' ')[0]).toISOString();
        console.log(cleanBirthday);

        var dutchDates = dateservice.dayAndFullMonth(cleanBirthday, "Europe/Amsterdam");
        console.log(dutchDates);
    }
}

我的控制台:

任何帮助将不胜感激。

【问题讨论】:

    标签: javascript momentjs


    【解决方案1】:

    不确定您为什么要调用 moment.tz,但应该只是 moment('10/2/2000 12:00:00 AM')。这将正确解析并允许您调用格式。

    编辑后

    您需要包括时刻-时区,而不仅仅是时刻。我在这里测试了你的代码:https://npm.runkit.com/moment-timezone,它工作正常。

    【讨论】:

    • 抱歉不够清楚,我使用moment.tz,因为我必须将日期从英语翻译成荷兰语格式,而且它似乎可以解析日期但无法翻译。
    • 我已经更新了我的答案 - 看来您可能没有包括时刻时区。
    • 如果这解决了您的问题,请您将其标记为正确吗?谢谢!
    • 对不起,我有一段时间没上网了。您的评论指出了正确的方向,但我包含了我的代码。最后我通过在 dayAndFullMonth 函数中设置 moment.locale('nl') 来解决它。 function dayAndFullMonth(dateTime, timezone) { moment.locale('nl') return moment.tz(dateTime, timezone).format('DD MMM'); }
    猜你喜欢
    • 2017-04-04
    • 1970-01-01
    • 1970-01-01
    • 2019-03-31
    • 1970-01-01
    • 1970-01-01
    • 2016-06-07
    • 1970-01-01
    • 2022-01-25
    相关资源
    最近更新 更多