【问题标题】:moment js to convert date from one format to other时刻js将日期从一种格式转换为另一种格式
【发布时间】:2016-08-12 11:22:16
【问题描述】:

我正在使用moment js转换日期变量格式

moment("23MAY68", 'DDMMMYY').format('YYYY-MM-DD');
moment("23MAY99", 'DDMMMYY').format('YYYY-MM-DD');

直到 68 年,输出为 2068。从 69 年开始,输出为 1969 而不是 2069。moment.js 中是否有语法或参数可以提及使用 2069 而不是 1969?

http://plnkr.co/edit/ljXuskMsUAuJnpkqMPUn?p=preview

【问题讨论】:

  • 请注意,您在 plunker 代码中使用了两位数的年份,而您在这里使用的是四位数字。
  • 我现在将年份值更新为 2 位数

标签: momentjs


【解决方案1】:

从时刻文档开始:

默认情况下,假设 68 岁以上的两位数年份在 1900 年代,而 68 岁或以下的年份则假设在 2000 年代。这可以通过替换moment.parseTwoDigitYear 方法来改变。

因此,如果您在代码中替换 moment.parseTwoDigitYear,您将得到 2069 而不是 1969。

这是一个工作示例:

moment.parseTwoDigitYear = function(year){
  return parseInt(year, 10) + 2000;
};

var s1 = moment("23MAY68", 'DDMMMYY').format('YYYY-MM-DD');
var s2 = moment("23MAY99", 'DDMMMYY').format('YYYY-MM-DD');

console.log(s1, s2);
<script src="//cdnjs.cloudflare.com/ajax/libs/moment.js/2.14.1/moment.min.js"></script>

【讨论】:

  • 由于输入中有四位数的年份,因此这是不必要的。但当输入中的年份只有两位数时,这是一个很好的方法。
  • 我建议这个解决方案是因为 OP 在链接的 plunker 中使用了两位数的年份
  • 那是有道理的。感谢您的澄清
【解决方案2】:

是的,有。只需用正确的格式解析

moment("23MAY2099", 'DDMMMYYYY').format('YYYY-MM-DD');

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-23
    • 1970-01-01
    • 1970-01-01
    • 2011-11-23
    • 2017-08-27
    相关资源
    最近更新 更多