4

我只是想从 amoment到 astring然后回到 a moment

但它并没有真正起作用:

f = 'dddd MMMM Do, YYYY'
s = 'Friday May 3rd, 2013'


d = moment().format(f)            # Sunday April 21st, 2013 
moment(d, f).format(f)            # Monday April 1st, 2013

moment(s, f)                      # Friday May 3rd, 2013
    .format(f)                    # Wednesday May 1st, 2013

它总是将序数解析为每月的第一天。

我的格式有问题吗?或者我期望format()如何工作?

4

1 回答 1

2

这个问题是在这里提出的。

解决方案是在解析时忽略序号日期的字母部分,使用DD代替Do.

var f1 = 'dddd MMMM Do, YYYY';
var f2 = 'dddd MMMM DD, YYYY';

var a = moment().format(f1);
console.log(a);                    // Thursday June 20th, 2013

var b = moment(a, f1).format(f1);
console.log(b);                    // Saturday June 1st, 2013

var c = moment(a, f2).format(f1);
console.log(c);                    // Thursday June 20th, 2013

如您所见,结果b是月份的第一天,因为它不知道如何处理日期编号。但是c拿起20, 并忽略了额外的th字符 - 产生了正确的结果。

于 2013-06-20T15:32:37.260 回答