我有一个奇怪的格式的日期,我不知道如何把它变成一个JS日期对象。我确信像moment.js这样的库有这方面的工具,但我真的不想为这个转换加载整个库。这是数据:
/日期(1472586116588-0400)/
编辑: 我已经更新了后端代码以使用JSON中的字符串而不是C#Date时间,然后我按如下方式转换DateTime:
Date.ToString("s");
这给了我这个字符串:2016-09-02T10:13:12
所以现在我的问题是如果我做var date = new Date(" 2016-09-02T10:13:12"); javascript回复:
Fri Sep 02 2016 06:13:12 GMT-0400(EDT)
但它应该给我:
Fri Sep 02 2016 10:13:12 GMT-0400(美国东部时间)
看来时区转换是加倍还是什么?任何人都知道如何解决这个问题?
答案 0 :(得分:0)
我假设这是从纪元以来的毫秒,有hhmm
偏移,所以我会这样做:
var input = "/Date(1472586116588-0400)/";
var [match, msec, offset] = input.match(/\((\d+)([+-]\d+)\)/);
var offsetHours = Math.floor(offset / 100);
var offsetMinutes = offset - offsetHours * 100;
var date = new Date(msec - offsetHours * 60 * 60 * 1000 - offsetMinutes * 60 * 1000);
console.log(date);
答案 1 :(得分:0)
通过将后端数据更改为ISO 8601格式中的字符串而不是C#DateTime来修复,如下所示:
date.ToString( “O”);
然后可以使用新的Date({string here});
将其简单地转换为javascript日期感谢James Thorpe建议在后端修复JSON数据,而不是将其破解为适合前端。