我有一个如下所示的日期对象:
Sun Mar 15 2015 02:30:00 GMT+0530 (IST) [epoch = 1426366800000]
我需要将其转换为Date JSON格式,我在Date对象上找到了函数toJSON()
。但是这个函数正在将时间转换回UTC时间,这对我们的后端造成了问题。任何建议如何解决这个..无法在任何地方找到任何文件。
这是我目前从toJSON()
得到的:
2015-03-14T21:00:00.000Z
答案 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-15T02: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-15T02: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'