【问题标题】:Converting a string representing milliseconds to a Date将表示毫秒的字符串转换为日期
【发布时间】:2023-03-05 09:53:01
【问题描述】:

我正在尝试将表示日期的字符串转换为毫秒格式,如下所示:

var start = new Date(s);

但是,它似乎不起作用,因为当我尝试显示日期时,我收到“无效日期”作为错误消息。

我想得到的是这种格式的日期:

Wed May 07 2014 09:00:00

这可能吗?

编辑:s变量的原始值是一个由13个数字组成的字符串(例如:13982762900000)

【问题讨论】:

  • 可以做现场演示吗?
  • s的内容是什么?
  • 你能举一个s变量的例子吗?
  • s的值是多少?
  • @Traffy 以 jsfiddle 为例

标签: javascript jquery datetime


【解决方案1】:

将其转换为数字类型而不是字符串:

var date = new Date(parseInt(s, 10))

说明:

new Date() 构造函数的输入是一个字符串。这意味着new Date() 将假定输入是“ISO8601 字符串”,而不是“表示毫秒数的整数值”,如下所述。

根据https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date,如果该值应被解释为“表示自 1970 年 1 月 1 日 00:00:00 UTC(Unix 纪元)以来的毫秒数,则它应该是一个整数。”

new Date()

具有以下构造函数(根据上面的链接):

new Date();
new Date(value);
new Date(dateString);
new Date(year, month, day, hour, minute, second, millisecond);

(如果将其转换为整数值,则这是正在使用的构造函数)

整数值,表示自 1970 年 1 月 1 日 00:00:00 UTC(Unix 纪元)以来的毫秒数。

dateString (这是之前调用的构造函数)

代表日期的字符串值。该字符串应采用 Date.parse() 方法可识别的格式(符合 IETF 的 RFC 2822 时间戳,也是 ISO8601 的一个版本)。

【讨论】:

    【解决方案2】:
    var date = new Date(parseInt(your_timestamp, 10));
    

    时间戳应该有 13 位数字。

    您的示例时间戳有 14 位数字。这是一个错误还是时间戳实际上是错误的?

    你可以:

    var date = new Date(parseInt(your_timestamp, 10) / 10);
    

    【讨论】:

      【解决方案3】:

      使用parseInt 将您的字符串转换为整数,它正在工作:

      var start = new Date(parseInt(s, 10));
      

      Live Demo


      参考

      【讨论】:

      • 请务必指定基数为 10:parseInt(s, 10)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-18
      • 2012-08-11
      • 2012-09-10
      • 2012-07-29
      • 2012-09-12
      • 2020-12-11
      相关资源
      最近更新 更多