moment.js中的日期格式,奇怪的日期值

时间:2015-07-09 13:12:11

标签: javascript date momentjs

所以我有两种来自json的日期。

m = '201811';
n = '/Date(1433030400000)/';

我正在尝试使用moment.js来格式化时间,但我猜想找不到合适的方法。

moment(m).format('YYYY DD') //"201811 01"

和我无法理解的n值导致这个输出:

moment(m).format('YYYY DD')//"2015 31"

2 个答案:

答案 0 :(得分:2)

将日期传递给moment()构造函数时,您可能需要指定它的格式。

因此,您需要做的第一次约会:

moment(m, 'YYYYMM').format('YYYY MM'); // if the date is indeed in the form YYYYMM

对于第二个日期,只需从字符串中提取数字部分并将其提供给moment

var ts = n.match(/(\d+)/);
moment(+ts[1]).format('YYYY DD');

请参阅代码段:

var m = '201811';
var n = '/Date(1433030400000)/';

alert(moment(m, 'YYYYMM').format('YYYY MM'));

var ts = n.match(/(\d+)/);
moment(+ts[1]).format('YYYY DD');

alert(moment(+ts[1]).format('YYYY MM'));
<script src="http://momentjs.com/downloads/moment.js"></script>

修改

感谢@MattJohnson,如果你至少有版本1.3.0,你可以简单地将/Date(1433030400000)/形式的字符串传递给moment()构造函数,它会自动检测正确的格式,另见here

答案 1 :(得分:0)

只需按以下格式传递它们:

var m = '201811';
var n = '/Date(1433030400000)/';

var formattedM = window.moment(m, 'YYYYMM').format('YYYY MMM DD'); //2018 Nov 01

var formattedN = window.moment(n).format('YYYY MMM DD'); //2015 May 31

我已将示例放入jsbin

感谢Matt Johnson指出该时刻可以采用/Date(1433030400000)/格式。