Как вы получаете метку времени Unix для начала сегодняшнего дня в JavaScript? - PullRequest
23 голосов
/ 25 августа 2011

Я понимаю, что текущую временную метку можно сгенерировать с помощью следующего ...

var timestamp = Math.round((new Date()).getTime() / 1000);

Что мне нужно, так это временная метка в начале текущего дня.Например, текущая временная метка примерно равна 1314297250, и я хотел бы иметь возможность генерировать 1314230400, что является началом сегодняшнего дня August 25th 2011.

Спасибо за вашу помощь.

Ответы [ 9 ]

41 голосов
/ 25 августа 2011
var now = new Date();
var startOfDay = new Date(now.getFullYear(), now.getMonth(), now.getDate());
var timestamp = startOfDay / 1000;
7 голосов
/ 16 августа 2013

Ну, самый чистый и быстрый способ сделать это с помощью:

long timestamp = 1314297250;
long beginOfDay = timestamp - (timestamp % 86400);

, где 86400 - количество секунд в одном дне

3 голосов
/ 25 августа 2011
var d = new Date();
d.setHours(0);
d.setMinutes(0);
d.setSeconds(0);
d.setMilliseconds(0);
var t = d / 1000;
3 голосов
/ 25 августа 2011
var now = new Date; // now

now.setHours(0);   // set hours to 0
now.setMinutes(0); // set minutes to 0
now.setSeconds(0); // set seconds to 0

var startOfDay = Math.floor(now / 1000); // divide by 1000, truncate milliseconds
1 голос
/ 16 сентября 2015

В качестве альтернативы вы можете вычесть по модулю длительность дня в миллисекундах, например:

var day = 24*60*60*1000;
var start_of_today = Date.now() - Date.now() % day;
1 голос
/ 18 февраля 2014

Решение Луиса Фонтеса возвращает Время по Гринвичу , поэтому оно может быть на 1 час (летнее время) отличным от решения setHours.

var d = new Date();
var t = d - (d % 86400000);

Упрощенная версия примеров выше ( местное время ).

var d = new Date();
d.setHours(0,0,0,0);
var t = d / 1000;

Здесь вы можете найти несколько тестов производительности: http://jsperf.com/calc-start-of-day

1 голос
/ 25 августа 2011

Еще одна альтернатива для начала дня:

var now = new Date();
var beginningOfDay = new Date(now.getTime() -
                     now.getHours() * 60 * 60 * 1000 -
                     now.getMinutes() * 60 * 1000 -
                     now.getSeconds() * 1000 -
                     now.getMilliseconds());
0 голосов
/ 16 июля 2017

Для любой даты легко получить метки времени начала / конца даты, используя строку даты ISO ('гггг-мм-дд'):

var dateString = '2017-07-13';
var startDateTS = new Date(`${dateString}T00:00:00.000Z`).valueOf();
var endDateTS = new Date(`${dateString}T23:59:59.999Z`).valueOf();

Для получения ISO-строки сегодняшнего дня вы должны использовать (new Date()).toISOString().substring(0, 10) Итак, чтобы получить TS на сегодня:

var dateString = (new Date()).toISOString().substring(0, 10);
var startDateTS = new Date(`${dateString}T00:00:00.000Z`).valueOf();
var endDateTS = new Date(`${dateString}T23:59:59.999Z`).valueOf();
0 голосов
/ 13 марта 2014
var yoursystemday = new Date(new Date().getTime()-(120000*60+new Date().getTimezoneOffset()*60000));
yoursystemday = new Date();
var current_time_stamp = Math.round(yoursystemday.getTime()/1000);
...