使用Moment JS将Microsoft JSON日期转换为本地日期时间

4

JSON日期: '/Date(1373428800000)/' 最终结果:2013年7月9日晚上8点(美国东部时间)

目前我通过以下3个步骤实现:

var a = cleanJsonDate('JsonDate');
var b = formatDate(a); // 7/10/2013 12:00 AM
var c = moment.utc(b); // 7/9/2013 8:00 PM
return c;

是否可能只使用moment js来实现相同的结果?

----更新-----

结合@ThisClark和@Matt的答案,我尽可能地接近了目标;但是,由于某些原因,“h”格式不起作用,我仍然得到20.00.00而不是8:00

var m = moment.utc(moment('/Date(1373428800000)/').format('M/D/YYYY h:m A')).toDate();
alert(m);
<script src="http://momentjs.com/downloads/moment.min.js"></script>

2个回答

14
这种格式已经原生支持 moment.js。直接传递即可。
moment('/Date(1373428800000)/')

您可以使用任何moment函数,例如.format().toDate()

如果您想要UTC时间,则执行以下操作:

moment.utc('/Date(1373428800000)/')

再次强调,您可以调用formattoDate函数,但请注意toDate函数会生成一个Date对象,该对象仍具有本地时间行为。除非您绝对需要一个Date对象,否则应坚持使用format和其他moment函数。


根据你更新的问题进行了更新。你在更新中展示的代码不被推荐使用。很抱歉我没有早些看到这个编辑。 - Matt Johnson-Pint
太棒了!我知道可以用moment解析.NET日期,但我不知道还有.format这个方法,谢谢你! - Jessica

4
我没有看到你的所有代码,但如果你可以从json中获取毫秒值为1373428800000,那么你可以直接将它传递给moment。我认为formatDate是你编写的一个函数。它是否执行像操作时间这样重要的功能,需要使用moment.js的格式函数,或者只是用moment的格式函数就可以了?

var date = 1373428800000;
var m = moment.utc(date);
//var m = moment.utc(date).format('M/D/YYYY H:mm A'); <-- alternative format
alert(m);
<script src="http://momentjs.com/downloads/moment.min.js"></script>


谢谢。但为什么它返回7月10日而不是9日。是的,formatDate是一个自定义方法;然而,我认为moment不需要它。 - usefulBee
不确定为什么a和b总是无效或NaN,而d返回12 AM。 var date = item.StartDate.replace(/[^0-9]/g, ''); var a = moment.utc(date); var b = moment.utc(date).format('M/D/YYYY H:mm A'); var c = 1373428800000; var d = moment.utc(c).toDate(); var e = moment.utc(c).format('M/D/YYYY H:mm A');
alert(a + " " + b + " " + d + " " + e);
// NaN 无效日期 7/10/2013 12:00 AM 7/10/2013 4:00 AM
- usefulBee
在您使用正则表达式修改item.StartDate之前,它的值是什么?您使用该正则表达式的目的是什么? - ThisClark
使用该正则表达式,我正在从返回的JSON数据值中提取数字。我认为我忘记了使用parseInt(date)将提取的值解析为整数。 - usefulBee
1373428800000 是 7/10/2013 12:00 AM(午夜),转换后应该是比 7/9/2013 8:00 PM 早 4 小时。不确定为什么我们得到的是比 7/10/2013 4:00 AM 晚 4 小时。这对我来说没有意义... - usefulBee
尝试使用 var date = parseInt(item.StartDate);,然后执行 var m = moment.utc(date).format(/*你的格式在这里*/);。这对你有用吗? - ThisClark

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接