我想将日期转换为时间戳,我的输入为26-02-2012
。我用了
new Date(myDate).getTime();
它说NaN ..任何人都能说出如何转换它吗?
答案 0 :(得分:153)
var myDate="26-02-2012";
myDate=myDate.split("-");
var newDate=myDate[1]+","+myDate[0]+","+myDate[2];
alert(new Date(newDate).getTime()); //will alert 1330192800000
<强>更新强>
var myDate="26-02-2012";
myDate=myDate.split("-");
var newDate=myDate[1]+"/"+myDate[0]+"/"+myDate[2];
alert(new Date(newDate).getTime()); //will alert 1330210800000
DEMO(在Chrome,FF,Opera,IE和Safari中测试过)。
答案 1 :(得分:40)
尝试此功能,它使用Date.parse()方法,不需要任何自定义逻辑:
function toTimestamp(strDate){
var datum = Date.parse(strDate);
return datum/1000;
}
alert(toTimestamp('02/13/2009 23:31:30'));
答案 2 :(得分:22)
var dtstr = "26-02-2012";
new Date(dtstr.split("-").reverse().join("-")).getTime();
答案 3 :(得分:15)
这个重构的代码将会这样做
let toTimestamp = strDate => Date.parse(strDate)
这适用于所有现代浏览器,除了ie8 -
答案 4 :(得分:5)
您只需撤销日期数字,然后使用-
更改,
:
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();
P.S。英国的地方在这里无所谓。
答案 5 :(得分:5)
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())));
}
答案 6 :(得分:3)
这里有两个问题。 首先,您只能在日期的实例上调用getTime。您需要将新日期括在括号中或将其分配给变量。
其次,你需要以适当的格式传递一个字符串。
工作示例:
(new Date("2012-02-26")).getTime();
答案 7 :(得分:2)
/**
* 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());
}
答案 8 :(得分:2)
您的字符串格式不是Date
对象specified to handle。您必须自己解析它,使用日期解析库,如MomentJS或较旧的(并且目前没有维护,据我所知)DateJS,或按其正确的格式(例如,2012-02-29
),然后要求Date
解析它。
为什么要获得NaN
:当您要求new Date(...)
处理无效字符串时,它会返回一个Date
对象,该对象设置为无效日期(new Date("29-02-2012").toString()
返回"Invalid date"
)。在此状态的日期对象上调用getTime()
将返回NaN
。
答案 9 :(得分:2)
下面的代码会将当前日期转换为时间戳。
var currentTimeStamp = Date.parse(new Date());
console.log(currentTimeStamp);
答案 10 :(得分:0)
要将(ISO)日期转换为 Unix时间戳,我最终获得了比所需时间长3个字符的时间戳,因此我的年份大约为5万...
我必须将其指定为1000:
new Date('2012-02-26').getTime() / 1000
答案 11 :(得分:0)
其他开发人员已经提供了答案,但以我自己的方式,您可以即时执行此操作,而无需创建任何用户定义的函数,如下所示:
var timestamp = Date.parse("26-02-2012".split('-').reverse().join('-'));
alert(timestamp); // returns 1330214400000
答案 12 :(得分:0)
对于那些希望使用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
答案 13 :(得分:0)
以防您来这里寻找当前时间戳
var date = new Date();
var timestamp = date.getTime();
TLDR:
new Date().getTime();
答案 14 :(得分:0)
仅对await
对象执行一些算术运算将返回时间戳记为Date
。这对于紧凑的符号很有用。我发现这是最容易记住的方法,因为该方法还可以将转换为number
类型的数字转换回string
类型。
number
答案 15 :(得分:0)
使用下面的等式时,应采用该标准日期格式YYYY-MM-DD。您可能会花时间,例如:2020-04-24 16:51:56或2020-04-24T16:51:56 + 05:30。它将正常工作,但日期格式仅应为YYYY-MM-DD。
var myDate = "2020-04-24";
var timestamp = +new Date(myDate)
答案 16 :(得分:0)
第一个答案很好,但是由于 split('') 使用 react typescript 会抱怨 对我来说,效果更好的方法是。
parseInt((new Date("2021-07-22").getTime() / 1000).toFixed(0))
乐于助人。