将正常日期转换为unix时间戳

Sta*_*tan 79 javascript jquery datetime date unix-timestamp

如何2012.08.10在javascript中将正常日期转换为unix时间戳?

小提琴:http ://jsfiddle.net/J2pWj/




我在这里看过许多帖子,用PHP,Ruby等转换它......但我需要在JS中做这个.

fgu*_*len 165

new Date('2012.08.10').getTime() / 1000
Run Code Online (Sandbox Code Playgroud)

查看JavaScript日期文档.

  • Math.floor它或它不是一个unix时间戳(它有一个小数) (23认同)
  • @Mentor UNIX 时间以秒为单位,而不是毫秒 (2认同)
  • 你为什么把结果除以1000?因为 `getTime` 会给你以毫秒为单位 (2认同)

the*_*chi 45

parseInt((new Date('2012.08.10').getTime() / 1000).toFixed(0))
Run Code Online (Sandbox Code Playgroud)

toFixed(0)除以除去任何小数,除以1000以将其从毫秒转换为秒,这一点很重要.

.getTime()函数以毫秒为单位返回时间戳,但真正的unix时间戳始终以秒为单位.

  • 请注意,这会返回一个字符串,而不是一个数字. (4认同)
  • 好点,将答案更改为用 parseInt() 包装以转换回整数。 (3认同)
  • 如果性能很重要,可能更好、更正确的选项是 `Math.round` 或 `Math.floor`,而不是转换为字符串然后返回整数 - 即:`Math.round(new Date('2012.08) .10').getTime() / 1000)` (3认同)

小智 12

您可以使用 Date.parse() 方法来完成。

Date.parse($("#yourCustomDate).val())
Run Code Online (Sandbox Code Playgroud)

Date.parse("03.03.2016") 输出-> 1456959600000

Date.parse("2015-12-12") 输出-> 1449878400000


Mah*_*hus 9

你应该查看moment.js api,它非常易于使用,并具有许多内置功能.

我认为对于你的问题,你可以使用这样的东西:

var unixTimestamp = moment('2012.08.10', 'YYYY.MM.DD').unix();
Run Code Online (Sandbox Code Playgroud)


Bar*_*mar 7

您可以使用Date.parse(),但它接受的输入格式取决于实现。但是,如果您可以将日期转换为ISO 格式 (YYYY-MM-DD),则大多数实现都应该能够理解它。

请参阅为什么 Date.parse 给出不正确的结果?


hyb*_*id9 6

你可以简单地使用一元+运算符

(+new Date('2012.08.10')/1000).toFixed(0);

http://xkr.us/articles/javascript/unary-add/ - 查看日期.

  • 只想在这里添加两个注释:不需要一元加号 + 运算符,因为 `/` 已经是一个数学运算符。此外,`toFixed` 返回一个字符串而不是一个数字,以防类型很重要。 (4认同)

KAR*_*N.A 5

var d = '2016-01-01T00:00:00.000Z';
console.log(new Date(d).valueOf()); // returns the number of milliseconds since the epoch
Run Code Online (Sandbox Code Playgroud)


dum*_*tru 5

var date = new Date('2012.08.10');
var unixTimeStamp = Math.floor(date.getTime() / 1000);
Run Code Online (Sandbox Code Playgroud)

在这种情况下,重要的是只返回一个整数(所以简单的除法不会做),并且只返回实际经过的秒数(这就是为什么这段代码使用Math.floor()而不是Math.round())。