【问题标题】:how to convert a string to a Unix timestamp in javascript?如何在javascript中将字符串转换为Unix时间戳?
【发布时间】:2013-09-09 03:44:12
【问题描述】:

我想在 javascript 中将字符串 "2013-09-05 15:34:00" 转换为 Unix 时间戳。任何人都可以告诉如何做到这一点?谢谢。

【问题讨论】:

    标签: javascript string time unix-timestamp


    【解决方案1】:

    您可以初始化一个 Date 对象并调用 getTime() 以获取 unix 格式。它以毫秒为单位,因此您需要除以 1000 才能在几秒内得到它。

    (new Date("2013/09/05 15:34:00").getTime()/1000)
    

    它可能有小数位,因此将其包装在 Math.round 中会清除它。

    Math.round(new Date("2013/09/05 15:34:00").getTime()/1000)
    

    【讨论】:

    • 这也会将给定的日期时间转换为时间戳中的本地时间。
    • 也不保证可以使用该字符串格式。
    【解决方案2】:

    试试

    (new Date("2013-09-05 15:34:00")).getTime() / 1000
    

    【讨论】:

      【解决方案3】:

      DaMouse404 answer 有效,但您将使用斜杠而不是破折号:

      您可以初始化一个 Date 对象并调用 getTime() 以获取 unix 格式。它以毫秒为单位,因此您需要除以 1000 才能在几秒内得到它。

      (new Date("2013/09/05 15:34:00").getTime()/1000)
      

      它可能有小数位,因此将其包装在 Math.round 中会清除它。

      Math.round(new Date("2013/09/05 15:34:00").getTime()/1000)
      

      【讨论】:

      • (new Date("2013-09-05 15:34:00").replace(/-/g, '/').getTime()/1000) 使用替换功能时要小心,你应该使用g,否则它只会转换第一个破折号。我在这上面浪费了很多时间。
      • 我不确定为什么最后一条评论被赞成。 Date 对象没有 replace 方法。另外,这个答案是不正确的;使用斜杠会为Date.parsenew Date(string) 使用的内容)保证解析产生不正确的格式。见Why does Date.parse give incorrect results?
      【解决方案4】:

      为此,您应该查看 moment.s-library

      使用它,您可以编写如下内容:

      newUnixTimeStamp = moment('2013-09-05 15:34:00', 'YYYY-MM-DD HH:mm:ss').unix();
      

      【讨论】:

      • 我认为分钟的正确格式是mm。所以moment的第二个参数是'YYYY-MM-DD HH:mm:ss
      【解决方案5】:

      我会自己使用日期解析,因为它是本机解决方案。 MDN documentation.

      const datetimeString = '04 Dec 1995 00:12:00 GMT';
      const unixTimestamp = Date.parse(datetimeString);
      // unixTimestamp = 818035920000
      

      【讨论】:

      猜你喜欢
      • 2017-07-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-27
      • 2017-01-18
      • 2011-03-16
      • 1970-01-01
      相关资源
      最近更新 更多