Как конвертировать дату в метку времени?

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

new Date(myDate).getTime();

Это говорит NaN.. Может ли кто-нибудь сказать, как это сделать?

Ответ 1

var myDate="26-02-2012";
myDate=myDate.split("-");
var newDate=myDate[1]+","+myDate[0]+","+myDate[2];
alert(new Date(newDate).getTime());​ //will alert 1330192800000

Update:

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).

Ответ 2

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

function toTimestamp(strDate){
   var datum = Date.parse(strDate);
   return datum/1000;
}
alert(toTimestamp('02/13/2009 23:31:30'));

Ответ 3

var dtstr = "26-02-2012";
new Date(dtstr.split("-").reverse().join("-")).getTime();

Ответ 4

этот отредактированный код сделает это

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

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

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

Ответ 6

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())));
}

Ответ 7

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

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

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

(new Date("2012-02-26")).getTime();

Ответ 8

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

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

Ответ 9

/**
 * 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());
}

Ответ 10

Чтобы преобразовать дату (ISO) в метку времени Unix, у меня была метка времени на 3 символа длиннее, чем нужно, поэтому мой год был где-то около 50 тысяч...

Я должен был разделить его на 1000: new Date('2012-02-26').getTime()/1000

Ответ 11

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

Ответ 12

Ответы были предоставлены другими разработчиками, но, по-моему, вы можете сделать это на лету, не создавая пользовательскую функцию следующим образом:

var timestamp = Date.parse("26-02-2012".split('-').reverse().join('-'));
alert(timestamp); // returns 1330214400000

Ответ 13

если вы пришли сюда в поисках текущей метки времени

  var date      = new Date();
  var timestamp = date.getTime();

TLDR:

new Date().getTime();