Ответы:
var start = new Date();
start.setHours(0,0,0,0);
var end = new Date();
end.setHours(23,59,59,999);
alert( start.toUTCString() + ':' + end.toUTCString() );
Если вам нужно получить время UTC от них, вы можете использовать UTC().
setUTCHoursвместо того, setHoursчтобы получить Универсальное время
setHoursопасно, поскольку оно устанавливает локальные часы вместо часов UTC.
Использование momentjs библиотеки, это может быть достигнуто с startOf()и endOf()методами на текущем объекте даты в тот момент, передавая строку в 'day'качестве аргументов:
Местное время по Гринвичу:
var start = moment().startOf('day'); // set to 12:00 am today
var end = moment().endOf('day'); // set to 23:59 pm today
var start = moment.utc().startOf('day');
var end = moment.utc().endOf('day');
.toDate()в конце, чтобы получить дату. var end = moment().endOf('day').toDate();
.unix()в конце, чтобы получить метку времени Unix в секундах :) вот так:moment().startOf('day').unix()
moment(new Date()).endOf("day");, не работает, но moment().endOf("day");работает.
moment-timezoneи сделать это: moment().tz('America/Chicago').startOf('day').toDate().
Используя библиотеку luxon.js , этого можно достичь с помощью методов startOf и endOf, передав в качестве параметра значение «день».
var DateTime = luxon.DateTime;
DateTime.local().startOf('day').toUTC().toISO(); //2017-11-16T18:30:00.000Z
DateTime.local().endOf('day').toUTC().toISO(); //2017-11-17T18:29:59.999Z
DateTime.fromISO(new Date().toISOString()).startOf('day').toUTC().toISO(); //2017-11-16T18:30:00.000Z
удалите .toUTC (), если вам нужно только местное время
и вы можете спросить, почему не moment.js , ответ здесь за это.
В MomentJs мы можем объявить это как:
const start = moment().format('YYYY-MM-DD 00:00:01');
const end = moment().format('YYYY-MM-DD 23:59:59');
Если вас просто интересуют временные метки в GMT, вы также можете сделать это, что удобно для разных интервалов (час: 1000 * 60 * 6012 часов: 1000 * 60 * 60 * 12и т. Д.)
const interval = 1000 * 60 * 60 * 24; // 24 hours in milliseconds
let startOfDay = Math.floor(Date.now() / interval) * interval;
let endOfDay = startOfDay + interval - 1; // 23:59:59:9999
К вашему сведению (объединенная версия Tvanfosson)
он вернет фактическую дату => дату, когда вы вызываете функцию
export const today = {
iso: {
start: () => new Date(new Date().setHours(0, 0, 0, 0)).toISOString(),
now: () => new Date().toISOString(),
end: () => new Date(new Date().setHours(23, 59, 59, 999)).toISOString()
},
local: {
start: () => new Date(new Date(new Date().setHours(0, 0, 0, 0)).toString().split('GMT')[0] + ' UTC').toISOString(),
now: () => new Date(new Date().toString().split('GMT')[0] + ' UTC').toISOString(),
end: () => new Date(new Date(new Date().setHours(23, 59, 59, 999)).toString().split('GMT')[0] + ' UTC').toISOString()
}
}
// как пользоваться
today.local.now(); //"2018-09-07T01:48:48.000Z" BAKU +04:00
today.iso.now(); // "2018-09-06T21:49:00.304Z" *
* это применимо для Мгновенного типа времени на Java8, который автоматически конвертирует ваше местное время в зависимости от вашего региона (если вы планируете написать глобальное приложение)
Я предпочитаю использовать библиотеку date-fns для манипулирования датами. Это действительно отличный модульный и последовательный инструмент. Вы можете получить начало и конец дня следующим образом:
var startOfDay = dateFns.startOfDay;
var endOfDay = dateFns.endOfDay;
console.log('start of day ==> ', startOfDay(new Date('2015-11-11')));
console.log('end of day ==> ', endOfDay(new Date('2015-11-11')));
<script src="https://cdnjs.cloudflare.com/ajax/libs/date-fns/1.29.0/date_fns.min.js"></script>
var end = new Date(start.getTime());чтобы у вас был одинаковый момент времени - если вы меняете даты между начальной и конечной инициализацией - это может произойти - просто хорошая привычка