【发布时间】:2013-09-09 03:44:12
【问题描述】:
我想在 javascript 中将字符串 "2013-09-05 15:34:00" 转换为 Unix 时间戳。任何人都可以告诉如何做到这一点?谢谢。
【问题讨论】:
标签: javascript string time unix-timestamp
我想在 javascript 中将字符串 "2013-09-05 15:34:00" 转换为 Unix 时间戳。任何人都可以告诉如何做到这一点?谢谢。
【问题讨论】:
标签: javascript string time unix-timestamp
您可以初始化一个 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")).getTime() / 1000
【讨论】:
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.parse(new Date(string) 使用的内容)保证解析产生不正确的格式。见Why does Date.parse give incorrect results?。
为此,您应该查看 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
我会自己使用日期解析,因为它是本机解决方案。 MDN documentation.
const datetimeString = '04 Dec 1995 00:12:00 GMT';
const unixTimestamp = Date.parse(datetimeString);
// unixTimestamp = 818035920000
【讨论】:
new Date(string) 使用Date.parse。此外,您不应在任意格式上使用 Date.parse。见Why does Date.parse give incorrect results?。