2

有没有人从以下形式的 ISO-8601 日期时间字符串中获得紧凑/优雅的地图:

2013-12-28T20:30:00-0700

到朱利安的一天。我希望找到一个避免外部库并具有最少的正则表达式和字符串操作的解决方案。

4

1 回答 1

3

这是一种方法。

您可以将 ISO 字符串(也带有时区偏移)转换为Date现代 JavaScript (ES5) 中的 JavaScript 对象。这适用于 Node.js、Chrome 和 Firefox。Safari 或 IE 尚不支持它。如果您需要它在所有浏览器中工作,您必须自己解析日期或使用Moment.js 之类的库。

我针对美国海军天文台朱利安日期转换器测试了该算法的一系列日期。

对于公历转换之前的日期(1582 年 10 月 15 日),这假定为预测公历,并将与美国海军天文台显示的不同。

function julianDayNumber(d) {
  var epoch = 2440587.500000;                   // Jan. 1, 1970 00:00:00 UTC
  return d.getTime() / 86400000 + epoch;
}

示例用法:

console.log(julianDayNumber(new Date('2013-12-28T20:30:00-0700')));
// prints: 2456655.6458333335
于 2013-12-18T19:41:17.007 回答