преобразовать дату в метку времени в JavaScript? - PullRequest
131 голосов
/ 26 марта 2012

Я хочу преобразовать дату в метку времени, мой ввод 26-02-2012.Я использовал

new Date(myDate).getTime();

Там написано NaN .. Может кто-нибудь сказать, как преобразовать это?

Ответы [ 12 ]

159 голосов
/ 26 марта 2012
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).

41 голосов
/ 20 декабря 2015

Попробуйте эту функцию, она использует метод Date.parse () и не требует никакой пользовательской логики:

function toTimestamp(strDate){
   var datum = Date.parse(strDate);
   return datum/1000;
}
alert(toTimestamp('02/13/2009 23:31:30'));
22 голосов
/ 26 марта 2012
var dtstr = "26-02-2012";
new Date(dtstr.split("-").reverse().join("-")).getTime();
16 голосов
/ 15 ноября 2017

этот переработанный код сделает это

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

, это работает во всех современных браузерах, кроме ie8-

5 голосов
/ 22 марта 2013
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())));
}
5 голосов
/ 26 марта 2012

Вам нужно просто поменять цифру даты и изменить - на ,:

 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 Локализация в Великобритании здесь не имеет значения.

3 голосов
/ 07 июня 2018

Здесь есть две проблемы.Во-первых, вы можете вызвать getTime только для экземпляра даты.Вам нужно заключить новую дату в скобки или присвоить ее переменной.

Во-вторых, вам нужно передать ей строку в правильном формате.

Рабочий пример:

(new Date("2012-02-26")).getTime();
2 голосов
/ 06 мая 2017
/**
 * 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());
}
2 голосов
/ 26 марта 2012

Ваша строка не в том формате, в котором объект Date имеет значение , указанное для обработки .Вам придется проанализировать его самостоятельно, использовать библиотеку разбора даты, например MomentJS или более старую (и, насколько я могу судить, не поддерживается) DateJS , или втирать ее вправильный формат (например, 2012-02-29) перед запросом Date на его анализ.

Почему вы получаете NaN: когда вы запрашиваете new Date(...) для обработки недопустимой строки, возвращается Date объект, для которого установлена ​​недопустимая дата (new Date("29-02-2012").toString() возвращает "Invalid date").Вызов getTime() для объекта даты в этом состоянии возвращает NaN.

0 голосов
/ 20 февраля 2019

Для тех, кто хочет иметь читаемую метку времени в формате 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...