【问题标题】:Javascript convert time to epoch formatJavascript将时间转换为纪元格式
【发布时间】:2016-06-07 15:13:28
【问题描述】:

我有一个类似 2016-02-21T02:14:39.000000 的约会信息

如果可能,希望使用 Javascript 将其转换为纪元时间

【问题讨论】:

  • 严格来说,没有时区的日期字符串应该被视为本地的,这是你想要的吗?

标签: javascript date datetime epoch


【解决方案1】:

试试

var ts = "2016-02-21T02:14:39.000000";

var unix_seconds = ((new Date(ts)).getTime()) /1000;

console.log(unix_seconds);

getTime 返回毫秒数,所以除以 1000 得到秒数

https://jsfiddle.net/tbxac0de/

【讨论】:

  • 除了不是所有在用的浏览器都支持这种格式,而且在那些支持的浏览器中,有些(例如 Chrome)错误地将其视为 UTC,因此解析它更安全。
【解决方案2】:

大概“将其转换为纪元时间”是指自常见的 UNIX 和 ECMAScript 纪元以来的秒数或毫秒数。时间值可以通过将字符串转换为Date并获取其内部时间值来找到。

到目前为止,将字符串转换为日期的最佳方法是手动解析它。库可以提供帮助,但函数并不难编写。例如。要将“2016-02-21T02:14:39.000000”解析为本地日期(即没有时区的 ISO 8601 格式),请使用以下内容:

// Parse y-m-dTh:m:s as local date and time
// since there is no timezone
function parseIsoLocal(s) {
  var b = s.split(/\D/);
  return new Date(b[0],b[1]-1,b[2],b[3],b[4],b[5],
                 ((b[6]||'')+'000').slice(0,3));
}

// Convert string to Date
var d = parseIsoLocal('2016-02-21T02:14:39.000000');

// Show date and milliseconds since epoch
document.write(d + '<br>' + +d);

上面可以很容易地扩展到将字符串视为 UTC、合并时区并验证输入,但在这种情况下似乎不需要。

请注意,大多数浏览器会解析 OP 中的格式,但有些正在使用的浏览器不会,其中一些将其视为本地格式,而另一些则视为 UTC。根据 ISO 8601,它应该被视为本地,这就是我所做的。

【讨论】:

    猜你喜欢
    • 2019-09-26
    • 2021-01-01
    • 2015-01-23
    • 2019-11-14
    • 2018-05-16
    • 2021-03-25
    • 2018-09-21
    • 2019-07-31
    • 2012-12-17
    相关资源
    最近更新 更多