如何将日期转换为时间戳?

IT技术 javascript date time
2021-01-21 13:59:31

我想将日期转换为时间戳,我的输入是26-02-2012. 我用了

new Date(myDate).getTime();

它说 NaN .. 谁能告诉如何转换它?

6个回答

将字符串拆分为各个部分,并将它们直接提供给 Date 构造函数:

更新:

var myDate = "26-02-2012";
myDate = myDate.split("-");
var newDate = new Date( myDate[2], myDate[1] - 1, myDate[0]);
console.log(newDate.getTime());

来吧,说真的,他们真的应该考虑一个更好的命名而不是 getTime()!
2021-03-22 13:59:31
不幸的是,这在 Safari5 中不起作用,因为它返回NaN. 在 Safari 中,您必须使用其他可能的构造函数new Date(year, month, day);,关于此示例:new Date(myDate[2], myDate[1], myDate[0]);
2021-03-30 13:59:31
注意:new Date(newDate).getTime()将产生毫秒分辨率的时间戳。
2021-03-31 13:59:31
与其将日期字符串从“欧洲”格式转换为“美国”格式,不如将其转换为 ISO 8601 格式 ( YYYY-MM-DD),该格式保证可以被 理解Date(),并且通常来说,它是日期字符串最具互操作性的格式。
2021-04-05 13:59:31
秒使用: Math.floor(new Date(newDate).getTime() / 1000)
2021-04-06 13:59:31

试试这个函数,它使用Date.parse()方法并且不需要任何自定义逻辑:

function toTimestamp(strDate){
   var datum = Date.parse(strDate);
   return datum/1000;
}
alert(toTimestamp('02/13/2009 23:31:30'));
不推荐使用内置解析器。
2021-03-12 13:59:31
2021-03-27 13:59:31
@RobG 能否请您说明为什么不推荐这样做?这将为您的评论增加value和理解。
2021-04-03 13:59:31

这个重构的代码会做到

let toTimestamp = strDate => Date.parse(strDate)

这适用于除 ie8- 之外的所有现代浏览器

这里有两个问题。首先,您只能在日期实例上调用 getTime。您需要将新日期括在括号中或将其分配给变量。

其次,您需要以正确的格式将字符串传递给它。

工作示例:

(new Date("2012-02-26")).getTime();
不需要将日期瞬间包裹在括号中。只需要正确的字符串格式。
2021-03-24 13:59:31

如果你来这里是为了寻找当前的时间戳

var date      = new Date();
var timestamp = date.getTime();

或者干脆

new Date().getTime();
//console.log(new Date().getTime());