Moment.js默认年份是2001年

时间:2018-02-01 02:12:08

标签: javascript node.js date momentjs

问题描述和重现步骤:

  1. 接收用户输入为3/3 var response
  2. 解析为日期变量var date = moment(new Date(response))
  3. 执行console.log of date会给出moment("2001-03-03T00:00:00.000")
  4. 年份默认为2001年。由于用户可能以自己的格式输入日期,因此我不想添加格式,因为我不知道他们可能想要输入的格式。< / p>

    环顾四周后,我发现了一些Moment github问题(#635#912),提到问题已经解决,但我仍然是2001年的默认年份。

    如果没有说明,我还建议将年份设置为今年:

    if (date.year() === 2001) {
        date.year() = moment().year();
    }
    

    这有效,但感觉就像一个肮脏的解决方案。任何想法,我可以做什么呢?

    提前致谢!

    当前环境

    1. Node.js v8.9.4
    2. Moment.js v2.20.1
    3. VS代码v1.19.3
    4. MS Bot SDK v3.14.0
    5. p / s还是相当新的stackoverflow / github问题,而不是确定我应该在哪里发布。如果您需要更多信息,请与我们联系!

1 个答案:

答案 0 :(得分:0)

moment与格式字符串一起使用以确保格式正确。您可能希望强制用户提供年份或使用日期选择器。机器只能这么做

console.log(moment('3/3', 'MM/dd').toString());
// or
console.log(moment('3/3', 'dd/MM').toString());
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.20.1/moment.js"></script>