在javascript中将日期转换为时间戳?

时间:2012-03-26 13:38:54

标签: javascript date time

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

new Date(myDate).getTime();

它说NaN ..任何人都能说出如何转换它吗?

17 个答案:

答案 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))

乐于助人。