Подтвердить что ты не робот

Как вы получаете временную метку unix для начала сегодняшнего дня в javascript?

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

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

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

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

4b9b3361

Ответ 1

var now = new Date();
var startOfDay = new Date(now.getFullYear(), now.getMonth(), now.getDate());
var timestamp = startOfDay / 1000;

Ответ 2

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

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

где 86400 - количество секунд за один день

Ответ 3

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

Ответ 4

var d = new Date();
d.setHours(0);
d.setMinutes(0);
d.setSeconds(0);
d.setMilliseconds(0);
var t = d / 1000;

Ответ 5

Другой альтернативой для получения начала дня является следующее:

var now = new Date();
var beginningOfDay = new Date(now.getTime() -
                     now.getHours() * 60 * 60 * 1000 -
                     now.getMinutes() * 60 * 1000 -
                     now.getSeconds() * 1000 -
                     now.getMilliseconds());

Ответ 6

Решение Luis Fontes возвращает время UTC, поэтому это может быть 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

Ответ 7

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

var day = 24*60*60*1000;
var start_of_today = Date.now() - Date.now() % day;

Ответ 8

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);

Ответ 9

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

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();