Преобразовать дату в метку времени Unix

Как преобразовать обычную дату 2012.08.10 к метке времени unix в javascript?

Скрипка:http://jsfiddle.net/J2pWj/




Я видел много сообщений здесь, которые конвертируют его в PHP, Ruby и т. д... Но мне нужно сделать это внутри JS.

10 ответов


new Date('2012.08.10').getTime() / 1000

Регистрация документация по дате JavaScript.


parseInt((new Date('2012.08.10').getTime() / 1000).toFixed(0))

важно добавить toFixed(0) чтобы удалить любые десятичные дроби при делении на 1000 для преобразования из миллисекунд в секунды.

на .getTime() функция возвращает метку времени в миллисекундах, но истинные метки времени unix всегда находятся в секундах.


вы должны проверить момент.JS api, он очень прост в использовании и имеет множество встроенных функций.

Я думаю, что для вашей проблемы, вы могли бы использовать что-то вроде этого:

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/ - посмотрите под датами.


var d = '2016-01-01T00:00:00.000Z';
console.log(new Date(d).valueOf()); // returns the number of milliseconds since the epoch

можно использовать дата.parse (), но форматы ввода, которые он принимает, зависят от реализации. Однако, если вы можете преобразовать дату формат ISO (гггг-ММ-ДД), большинство реализаций должны это понимать.

посмотреть почему дата.разбор дают неправильные результаты?.


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'

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

Date.parse($("#yourCustomDate).val())

дата.разбор("03.03.2016") выход - > 1456959600000

дата.разбор("2015-12-12") выход - > 1449878400000


var date = new Date('2012.08.10');
var unixTimeStamp = Math.floor(date.getTime() / 1000);

в этом случае важно вернуть только целое число (так что простое деление не будет делать), а также возвращать только фактически прошедшие секунды (вот почему этот код использует Math.floor(), а не Math.round()).