我想将日期转换为时间戳,我的输入是26-02-2012
。我用了
new Date(myDate).getTime();
上面写着NaN ..有人能告诉你如何转换吗?
Date(myDate).getTime()
(您标记为代码的内容),或者之前的“新”一词意味着要成为代码的一部分?您付出的努力越多,得到的答案就越好。
我想将日期转换为时间戳,我的输入是26-02-2012
。我用了
new Date(myDate).getTime();
上面写着NaN ..有人能告诉你如何转换吗?
Date(myDate).getTime()
(您标记为代码的内容),或者之前的“新”一词意味着要成为代码的一部分?您付出的努力越多,得到的答案就越好。
Answers:
var myDate = "26-02-2012";
myDate = myDate.split("-");
var newDate = myDate[1]+","+myDate[0]+","+myDate[2];
console.log(new Date(newDate).getTime());
更新:
var myDate = "26-02-2012";
myDate = myDate.split("-");
var newDate = myDate[1]+"/"+myDate[0]+"/"+myDate[2];
console.log(new Date(newDate).getTime());
演示(在Chrome,FF,Opera,IE和Safari中测试)。
NaN
。在Safari中,您必须new Date(year, month, day);
针对此示例使用其他可能的构造函数:new Date(myDate[2], myDate[1], myDate[0]);
YYYY-MM-DD
)更好,这可以确保Date()
,并且通常说来,日期字符串是最可互用的格式。
new Date(newDate).getTime()
将产生以毫秒为单位的时间戳记。
Math.floor(new Date(newDate).getTime() / 1000)
试试这个函数,它使用Date.parse()方法,不需要任何自定义逻辑:
function toTimestamp(strDate){
var datum = Date.parse(strDate);
return datum/1000;
}
alert(toTimestamp('02/13/2009 23:31:30'));
你只需要扭转你的日期数字,变化-
有,
:
new Date(2012,01,26).getTime(); // 02 becomes 01 because getMonth() method returns the month (from 0 to 11)
在您的情况下:
var myDate="26-02-2012";
myDate=myDate.split("-");
new Date(parseInt(myDate[2], 10), parseInt(myDate[1], 10) - 1 , parseInt(myDate[0]), 10).getTime();
PS UK语言环境在这里并不重要。
Number
以a开头的字符串0
是有问题的-使用parseInt
并指定基数。
function getTimeStamp() {
var now = new Date();
return ((now.getMonth() + 1) + '/' + (now.getDate()) + '/' + now.getFullYear() + " " + now.getHours() + ':'
+ ((now.getMinutes() < 10) ? ("0" + now.getMinutes()) : (now.getMinutes())) + ':' + ((now.getSeconds() < 10) ? ("0" + now
.getSeconds()) : (now.getSeconds())));
}
对于那些希望以以下格式阅读时间戳的人, yyyymmddHHMMSS
> (new Date()).toISOString().replace(/[^\d]/g,'') // "20190220044724404"
> (new Date()).toISOString().replace(/[^\d]/g,'').slice(0, -3) // "20190220044724"
> (new Date()).toISOString().replace(/[^\d]/g,'').slice(0, -9) // "20190220"
用法示例:备份文件扩展名。 /my/path/my.file.js.20190220
您的字符串格式不是指定Date
对象要处理的格式。您必须自己解析,使用MomentJS之类的日期解析库或更旧的(据我所知,目前还没有维护)DateJS,或者2012-02-29
在请求Date
解析之前将其解析为正确的格式(例如)。
获得的原因NaN
:当您要求new Date(...)
处理无效的字符串时,它将返回一个Date
设置为无效日期的对象(new Date("29-02-2012").toString()
return "Invalid date"
)。getTime()
在此状态下调用日期对象将返回NaN
。
Date
对象(与DOM无关)。
/**
* Date to timestamp
* @param string template
* @param string date
* @return string
* @example datetotime("d-m-Y", "26-02-2012") return 1330207200000
*/
function datetotime(template, date){
date = date.split( template[1] );
template = template.split( template[1] );
date = date[ template.indexOf('m') ]
+ "/" + date[ template.indexOf('d') ]
+ "/" + date[ template.indexOf('Y') ];
return (new Date(date).getTime());
}
其他开发人员已经提供了答案,但是以我自己的方式,您可以即时执行此操作,而无需创建任何用户定义的函数,如下所示:
var timestamp = Date.parse("26-02-2012".split('-').reverse().join('-'));
alert(timestamp); // returns 1330214400000