Как я могу преобразовать обычную дату 2012.08.10
в метку времени unix в javascript?
Сценарий: http://jsfiddle.net/J2pWj/
Я видел здесь много постов, в которых он конвертируется в PHP, Ruby и т. д. Но мне нужно сделать это внутри JS.
Как я могу преобразовать обычную дату 2012.08.10
в метку времени unix в javascript?
Сценарий: http://jsfiddle.net/J2pWj/
Я видел здесь много постов, в которых он конвертируется в PHP, Ruby и т. д. Но мне нужно сделать это внутри JS.
new Date('2012.08.10').getTime() / 1000
См. документацию по датам JavaScript.
.getTime()
возвращает временные метки UNIX на момент написания этого ...
- person Mentor; 08.04.2019
getTime
даст вам в мс
- person Shahin Ghasemi; 14.03.2020
parseInt((new Date('2012.08.10').getTime() / 1000).toFixed(0))
Важно добавить toFixed(0)
, чтобы удалить десятичные дроби при делении на 1000 для преобразования миллисекунд в секунды.
Функция .getTime()
возвращает отметку времени в миллисекундах, но истинные отметки времени unix всегда находятся в секундах.
Math.round
или Math.floor
, а не преобразование в строку, а затем обратно в целое число, то есть: Math.round(new Date('2012.08.10').getTime() / 1000)
- person mindplay.dk; 15.06.2021
Вам следует ознакомиться с api moment.js, он очень прост в использовании и имеет множество встроенных функций.
Я думаю, что для вашей проблемы вы можете использовать что-то вроде этого:
var unixTimestamp = moment('2012.08.10', 'YYYY.MM.DD').unix();
Вы можете просто использовать унарный оператор +
(+new Date('2012.08.10')/1000).toFixed(0);
http://xkr.us/articles/javascript/unary-add/ - посмотрите под датами.
/
уже является математическим оператором. Кроме того, toFixed
возвращает строку, а не число, если тип важен.
- person Laurens; 06.06.2019
var date = new Date('2012.08.10');
var unixTimeStamp = Math.floor(date.getTime() / 1000);
В этом случае важно возвращать только целое число (поэтому простое деление не подходит), а также возвращать только фактически прошедшие секунды (поэтому в этом коде используется Math.floor()
, а не Math.round()
).
Вы можете использовать Date.parse (), но принимаемые форматы ввода зависят от реализации. Однако если вы можете преобразовать дату в формат ISO (ГГГГ-ММ-ДД), большинство реализаций должны это понимать.
См. Почему Date.parse дает неверные результаты?.
Вы можете сделать это с помощью метода Date.parse ().
Date.parse($("#yourCustomDate).val())
Date.parse ("03.03.2016") output-> 1456959600000
Date.parse ("2015-12-12") output-> 1449878400000
После сравнения отметки времени с отметкой 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'
преобразовать метку времени в метку времени unix.
const date = 1513787412;
const unixDate = new Date(date * 1000);// Dec 20 2020 (object)
чтобы получить отметку времени после преобразования const TimeStamp = new Date(date*1000).getTime(); //1513787412000
unix timestamp
имеет фундаментальное значение для всей инженерии и информатики. Хотелось бы, чтобы не было встроенного удобного метода. В настоящее время я используюMath.floor((+new Date()) / 1000);
- person Mars Robertson   schedule 07.05.2019