我只是想从moment
转到string
,然后回到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()
如何工作?
答案 0 :(得分:2)
此问题暂时提出here。
解决方案是在解析时忽略序数日期的字母部分,使用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
个字符,从而产生了正确的结果。