Как проверить метку времени в javascript

Как вы проверяете метки на JavaScript и timestamp принимать несколько форматов например гггг-ММ-ДД чч: мм: СС.S, гггг-ММ-ДД чч: мм: СС AM / PM.

6 ответов


вы можете проверить, является ли строка допустимой меткой времени, как это:

var valid = (new Date(timestamp)).getTime() > 0;

var valid = (new Date('2012-08-09')).getTime() > 0; // true
var valid = (new Date('abc')).getTime() > 0; // false

var d = Date.parse(your_timestamp);

d должно быть допустимым числом, а не NaN.

ref:http://www.w3schools.com/jsref/jsref_parse.asp


решение @Jørgen приятно, но если у вас есть дата до January 1, 1970 ваша метка времени будет отрицательным числом, но также и действительный метки.

function isValidTimestamp(_timestamp) {
    const newTimestamp = new Date(_timestamp).getTime();
    return isNumeric(newTimestamp);
}

function isNumeric(n) {
    return !isNaN(parseFloat(n)) && isFinite(n);
}

числовая проверка, которую я взял из после ответа SO.

например:

isValidTimestamp('12/25/1965') // true

каждое допустимое число является меткой времени. Если он удовлетворяет условию допустимого целого числа, то он также будет удовлетворять условию допустимой метки времени.

отметка времени = количество миллисекунд с 1970/01/01


С помощью new Date().getTime(); вы можете сделать это

и делать что-то вроде этого

var getDate="12-12-2012";
var myDate=getDate.split("-");
var getDate=myDate[1]+"/"+myDate[0]+"/"+myDate[2];
alert(new Date(getDate).getTime());

вы не можете обобщенно анализировать строку даты, не зная заранее, что это за формат или, по крайней мере, что это один из ограниченного числа форматов.

Если компонент даты всегда находится в формате ISO8601 (гггг-ММ-ДД), а время составляет 24 часа или 12 часов с AM или PM, вы должны иметь возможность легко отделить время, искать AM или PM, а затем рассматривать время как 12 или 24 часа в зависимости от того, присутствует оно или нет.

часовые пояса должны быть указаны как UTC (Z) или часы + / - UTC, сокращения, такие как EST, неоднозначны (и не стандартизированы).