我想将日期转换为时间戳,我的输入是26-02-2012。我使用
26-02-2012
new Date(myDate).getTime();
上面写着NaN..有人能告诉我怎么转换吗?
你的字符串不是Date对象是指定处理的格式。你必须自己解析它,使用日期解析库,比如MomentJS或更老的(据我所知,目前没有维护)DateJS,或者在请求Date解析它之前将其转换为正确的格式(例如,2012-02-29)。
Date
2012-02-29
得到NaN的原因:当你要求new Date(...)处理无效字符串时,它返回一个Date对象,该对象被设置为无效日期(new Date("29-02-2012").toString()返回"Invalid date")。在此状态下对日期对象调用getTime()将返回NaN。
NaN
new Date(...)
new Date("29-02-2012").toString()
"Invalid date"
getTime()
你只需要反转你的日期数字,用,改变-:
,
-
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();
附注:英国地区在这里并不重要。
将字符串拆分为多个部分,并将它们直接提供给Date构造函数:
更新:
var myDate = "26-02-2012"; myDate = myDate.split("-"); var newDate = new Date( myDate[2], myDate[1] - 1, myDate[0]); console.log(newDate.getTime());
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()))); }
试试这个函数,它使用Date.parse ()方法,不需要任何自定义逻辑:
function toTimestamp(strDate){ var datum = Date.parse(strDate); return datum/1000; } alert(toTimestamp('02/13/2009 23:31:30'));
/** * 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()); }
这个重构的代码就可以做到这一点
let toTimestamp = strDate => Date.parse(strDate)
这适用于除ie8-以外的所有现代浏览器
其次,您需要以适当的格式传递一个字符串。
工作的例子:
(new Date("2012-02-26")).getTime();
为了将(ISO)日期转换为Unix时间戳,我最终得到了一个比所需时间长3个字符的时间戳,所以我的年份大约是50k…
我必须除以1000: new Date('2012-02-26').getTime() / 1000 < / p >
new Date('2012-02-26').getTime() / 1000
其他开发人员已经提供了答案,但在我自己的方式中,你可以在不创建任何用户定义函数的情况下执行此操作,如下所示:
var timestamp = Date.parse("26-02-2012".split('-').reverse().join('-')); alert(timestamp); // returns 1330214400000
对于那些想要具有格式为yyyymmddHHMMSS的可读时间戳的人
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
/my/path/my.file.js.20190220
如果你来这里寻找当前的时间戳
var date = new Date(); var timestamp = date.getTime();
或者简单地
new Date().getTime(); /* console.log(new Date().getTime()); */
下面的代码将把当前日期转换为时间戳。
var currentTimeStamp = Date.parse(new Date()); console.log(currentTimeStamp);
简单地对Date对象执行一些算术运算将返回时间戳为number。这对于简洁表示法很有用。我发现这是最容易记住的方法,因为该方法也适用于将转换为string类型的数字转换回number类型。
number
string
let d = new Date(); console.log(d, d * 1);
它应该是这个标准日期格式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)
parseInt((new Date("2021-07-22").getTime() / 1000).toFixed(0))
很乐意帮忙。
new Date('2021-07-22 07:47:05.842442+00').getTime()
这也可以没有时间 new Date('2021-07-22 07:47:05.842442+00').getTime() < / p >
这也可以工作,但它不会接受时间 new Date('2021/07/22').getTime() < / p >
new Date('2021/07/22').getTime()
最后,如果所有都不工作,使用这个 new Date(year, month, day, hours, minutes, seconds, milliseconds) < / p >
new Date(year, month, day, hours, minutes, seconds, milliseconds)
注意,Month的计数从0开始,所以Jan === 0和Dec === 11
0
Jan === 0
Dec === 11
你可以使用valueOf方法
valueOf
new Date().valueOf()
一幅图胜过千言万语:)
在这里,我将当前日期转换为时间戳,然后将时间戳转换为当前日期,我们将展示如何将日期转换为时间戳,并将时间戳转换为日期。
在某些情况下,某些日期似乎是顽固的,也就是说,即使使用日期格式,如"2022-06-29 15:16:21",您仍然会得到null或NaN。我要解决我的问题,包括一个&;t &;在空白处,即:
const inputDate = "2022-06-29 15:16:21"; const newInputDate = inputDate.replace(" ", "T"); const timeStamp = new Date(newInputDate).getTime();
这对我来说很有效!干杯!
最简单和准确的方法是在日期之前添加一元操作符
console.log(`Time stamp is: ${Number(+new Date())}`)
只是提醒一下
Date.parse(“2022 - 08 - 04 - t04:02:10.909z")
1659585730909
日期。解析(新日期(“2022 - 08 - 04 - t04:02:10.909z"))
1659585730000