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

Date formatting in moment.js , weird date values

本文关键字:日期 格式 js moment      更新时间:2023-09-26

json中有两种日期

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

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

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

和n值我不能理解它导致这样的输出:

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

当您向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()构造函数,它会自动检测正确的格式,也见这里。

将它们以以下格式传递给moment:

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)/格式。