【问题标题】:Issue parsing date format M/D/YYYY问题解析日期格式 M/D/YYYY
【发布时间】:2017-04-14 14:26:15
【问题描述】:

我有一个M/D/YYYY 格式的字符串日期,我正在尝试将其格式化为new Date() 日期。我尝试了以下方法,它正在打印出Invalid Date

console.log(date)
console.log(moment(date, "MM/DD/YYYY").toDate())
console.log(moment(date, "M/D/YYYY").toDate())

3/10/2017
2017-10-03T04:00:00.000Z
2017-10-03T04:00:00.000Z

3/13/2017
Invalid Date
Invalid Date

https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.18.1/moment.js

这会在没有任何内容的情况下正确解析,但会引发大量警告。

var date = '2/23/2017';
console.log(moment(date, "MM/DD/YYYY").toDate())
console.log(moment(date, "M/D/YYYY").toDate())

var date = '3 / 13 / 2017';
console.log(moment(date, "MM/DD/YYYY").toDate())
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.18.1/moment.js"></script>
console.log(moment(date).toDate())

【问题讨论】:

  • 你为什么不直接使用new Date(date);
  • 不能用最新版本重现你的问题,你能提供一个 sn-p 或小提琴来显示你的问题吗?您使用的是哪个版本的时刻?在哪个浏览器/环境中?
  • 将您的代码转换为可运行的 sn-p 表明它不会引发任何错误。投票结束为“无法复制”。

标签: javascript date momentjs


【解决方案1】:

你可以这样试试moment(date, "MM/DD/YYYY").toDate();

【讨论】:

    【解决方案2】:

    尝试使用Date.parse,如下所示:

    new Date(Date.parse(date));
    new Date(Date.parse("2017-10-03T04:00:00.000Z"));
    // > Tue Oct 03 2017 00:00:00 GMT-0400 (EDT)
    

    然后您可以使用内置的浏览器功能.getDate().getMonth().getFullYear() /etc。获取上面的属性

    var myDate = new Date(Date.parse(date));
    console.log(myDate.getMonth())
    

    【讨论】:

    • new Date(Date.parse(string))new Date(string) 相同,但由于浏览器的差异,不建议使用内置解析器使用 Date.parse 或 new Date 解析字符串。
    【解决方案3】:

    这行得通!

    moment(date, "l").toDate()
    

    【讨论】:

    • 答案应该解释 OP 的问题以及您的答案如何解决它。
    猜你喜欢
    • 2016-12-16
    • 2020-04-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多