toJSON()在Date对象上将日期转换回UTC

时间:2015-03-14 10:41:58

标签: javascript date datetime

我有一个如下所示的日期对象:

Sun Mar 15 2015 02:30:00 GMT+0530 (IST) [epoch = 1426366800000] 

我需要将其转换为Date JSON格式,我在Date对象上找到了函数toJSON()。但是这个函数正在将时间转换回UTC时间,这对我们的后端造成了问题。任何建议如何解决这个..无法在任何地方找到任何文件。

这是我目前从toJSON()得到的:

2015-03-14T21:00:00.000Z

2 个答案:

答案 0 :(得分:0)

使用

 var date = "2015-03-14T21:00:00.000Z";
 //toLocaleString will output: 15-‎3‎-‎2015‎ 02‎:30‎:‎00
 var convert = new Date(date).toLocaleString(undefined, {second: "2-digit", minute: "2-digit", hour: "2-digit",  year: 'numeric', day: "2-digit", month: "2-digit"}).replace(/\s/, "T").replace(/(\d{2})-(\d{2})-(\d{4})/, "$3:$2:$1"){4})/, "$3")//will parse it to your local time

 //will output: "‎‎2015-03-15‎T02‎:30‎:‎00"

T替换空格将使其成为JSON证明。 JSON字符串中的Z表示转换为UTC。

请务必选择一种一致的日期格式,或者始终使用区域设置或以UTC格式存储日期,然后将其转换回您的区域设置。

toLocaleString将日期对象转换为您的语言环境格式。 Safari不支持注释options,只有在IE11中,Chrome和Firefox才是安全的。

您可以通过以下方式环游:

 var convert = new Date(date).toLocaleString();
 var splitted = convert.split(T)[0].split("-");
 var convert = splitted[2] + "-" + (splitted[1]) > 10 ? splitted[1] : "0" + splitted[1]) + "-" + (splitted[0]) > 10 ? splitted[0] : "0" + splitted[0]) + "T" + convert.split(T)[1];

哪个也会产生:"‎‎2015-03-15‎T02‎:30‎:‎00"

答案 1 :(得分:0)

认为没有比使用momentjs更简单,更简洁的方法。我不得不使用各种格式选项来构建字符串..它确实对我有用,但不确定是否有更简洁的方法。

以下是我可能需要此功能的其他人的格式化程序:

 var DateObjects = moment()   // current date. You can create for any date.
 var LocalISODateString = DateObjects.format('YYYY-MM-DDTHH:mm:ss.SSS')+'Z'