我有这个日期格式,我想在页面上正确显示它的格式:
var dt = "/Date(570333600000-0200)/";
我厌倦了尝试 Date.parse() 和变体,有人知道实现此目的的最佳方法吗?
最佳答案
这看起来像是自纪元以来的毫秒数和时区的组合。 (“纪元”是 UTC 时间 1970 年 1 月 1 日午夜。)
首先,你得到零件:
var str = "/Date(570333600000-0200)/";
var parts = str.match(/Date\((\d+)([\-+])(\d{2})(\d{2})/);
// /^^^\/^^^^^\/^^^^^\/^^^^^\
// | | | \-- tz minutes
// | | \--------- tz hours
// | \---------------- plus or minus
// \---------------------- raw milliseconds value
现在,从纪元以来的毫秒数部分构建日期很容易:
var msSinceTheEpoch = parseInt(parts[1], 10);
var dt = new Date(msSinceTheEpoch);
...但是我们需要处理时区。 JavaScript 的 Date
对象只有 UTC 和“本地时间”。因此,我们最好在构造日期之前将时区添加到毫秒值。
我猜测 -0200
表示“UTC 减去两小时”,因此假设这是真的,并且 -
可能是 +
(对于“plus X ...”),我们得到这个:
var hours = parseInt(parts[3], 10);
var minutes = parseInt(parts[4], 10);
var msOffset = ((hours * 60) + minutes) * 60 * 1000;
msSinceTheEpoch += parts[2] === "-" ? -msOffset : msOffset;
现在我们可以创建日期:
var dt = new Date(msSinceTheEpoch);
关于javascript - 如何在 JavaScript 中将字符串日期数字转换为日期时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22289474/