【问题标题】:JavaScript regexp parse date/time to millisecondsJavaScript regexp 将日期/时间解析为毫秒
【发布时间】:2014-09-15 11:36:46
【问题描述】:

我需要一些关于正则表达式的帮助,以便使用正则表达式将日期转换为毫秒。

我不确定我需要使用什么正则表达式来执行此操作。

以下是一些示例日期:

  • 3 dagar,12:00:46
  • 2 dagar,8:01:00
  • 1 天,11:34:00
  • 0 达加尔,0:04:00

再次,我想要一个将这些日期解析为毫秒的正则表达式。

或者,我可以使用像 this 这样的库来解析日期。但我也没有太多经验。

【问题讨论】:

  • 这不是正则表达式的工作。

标签: javascript regex date date-formatting


【解决方案1】:

以下正则表达式捕获天、小时、分钟和秒。 我假设您想要自 1970 年 1 月 1 日(纪元)以来的毫秒数。 我们使用捕获的信息初始化一个 Date 对象并提取毫秒数:

var regexp = /([0-9]*) [a-z]*, ([0-9]*):([0-9]*):([0-9]*)/;
var match = regexp.exec('3 dagar, 12:00:46'); //insert your timespan as text here
var date = new Date(1970, 0, parseInt(match[1]) + 1, match[2], match[3], match[4]);
// var result = Math.floor(date.getTime()/1000); //seconds
var result = date.getTime() - date.getTimezoneOffset() * 60000; //milliseconds

我们还需要考虑时区。 date.getTimezoneOffset() 以分钟为单位返回偏移量。

也许您想在rubular 中对此进行测试并进行调整,因为如果输入不符合您提供的格式可能会导致问题。

【讨论】:

  • 感谢它有点工作,我在rubular 上用另一个示例日期尝试过,它也工作得很好。但是,您提供的脚本的预期结果是 237 000 毫秒,但它给了我 2588637 毫秒,即 1970 年 1 月 31 日 00:03:57 作为日期。
  • 如果我打开浏览器控制台并输入 var d = new Date(2588637); d,它会显示 1970 年 1 月 1 日 09:11:26 GMT+0200。距离 1 月 31 日还很远
  • 我在网上使用了一个纪元时间转换工具,它把数字当作秒来处理。
  • 它现在给了我 -89763 以秒为单位,自纪元以来等于 1969 年 12 月 31 日 00:03:57
  • 我现在明白了!这是因为时区。我编辑了我的答案。
猜你喜欢
  • 2021-09-27
  • 2020-08-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-04-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多