Как преобразовать обычную дату 2012.08.10
в метку времени unix в javascript?
Fiddle: http://jsfiddle.net/J2pWj/
Я видел здесь много сообщений, конвертирующих его в PHP, Ruby и т. Д. Но мне нужно сделать это внутри JS.
Как преобразовать обычную дату 2012.08.10
в метку времени unix в javascript?
Fiddle: http://jsfiddle.net/J2pWj/
Я видел здесь много сообщений, конвертирующих его в PHP, Ruby и т. Д. Но мне нужно сделать это внутри JS.
unix timestamp
он настолько важен для инженерии и информатики. Хотелось бы, чтобы не было встроенного удобного метода. В настоящее время используюMath.floor((+new Date()) / 1000);
Ответы:
new Date('2012.08.10').getTime() / 1000
Проверьте документацию JavaScript Date .
parseInt((new Date('2012.08.10').getTime() / 1000).toFixed(0))
Важно добавить, toFixed(0)
чтобы удалить любые десятичные знаки при делении на 1000 для преобразования миллисекунд в секунды.
.getTime()
Функция возвращает метку времени в миллисекундах, но истинные метки времени UNIX всегда в секундах.
var d = '2016-01-01T00:00:00.000Z';
console.log(new Date(d).valueOf()); // returns the number of milliseconds since the epoch
Вы можете просто использовать унарный оператор +
(+new Date('2012.08.10')/1000).toFixed(0);
http://xkr.us/articles/javascript/unary-add/ - смотрите в разделе Даты.
/
он уже является математическим оператором. Кроме того, toFixed
возвращает строку, а не число, если тип важен ..
Вы можете использовать Date.parse () , но принимаемые форматы ввода зависят от реализации. Однако, если вы можете преобразовать дату в формат ISO (ГГГГ-ММ-ДД) , большинство реализаций должны это понимать.
var date = new Date('2012.08.10');
var unixTimeStamp = Math.floor(date.getTime() / 1000);
В этом случае важно возвращать только целое число (поэтому простое деление не годится), а также возвращать только фактически прошедшие секунды (поэтому этот код использует, Math.floor()
а не Math.round()
).
Вы можете сделать это с помощью метода Date.parse ().
Date.parse($("#yourCustomDate).val())
Date.parse ("03.03.2016") output-> 1456959600000
Date.parse ("2015-12-12") output-> 1449878400000
var datestr = '2012.08.10';
var timestamp = (new Date(datestr.split(".").join("-")).getTime())/1000;
После сравнения отметки времени с отметкой PHP ни одно из вышеперечисленных не кажется правильным для моего часового пояса. Приведенный ниже код дал мне тот же результат, что и PHP, что является наиболее важным для проекта, над которым я работаю.
function getTimeStamp(input) {
var parts = input.trim().split(' ');
var date = parts[0].split('-');
var time = (parts[1] ? parts[1] : '00:00:00').split(':');
// NOTE:: Month: 0 = January - 11 = December.
var d = new Date(date[0],date[1]-1,date[2],time[0],time[1],time[2]);
return d.getTime() / 1000;
}
// USAGE::
var start = getTimeStamp('2017-08-10');
var end = getTimeStamp('2017-08-10 23:59:59');
console.log(start + ' - ' + end);
Я использую это на NodeJS, и у нас есть часовой пояс «Австралия / Сидней». Итак, мне пришлось добавить это в файл .env:
TZ = 'Australia/Sydney'
Выше эквивалентно:
process.env.TZ = 'Australia/Sydney'