Respuestas:
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() );
Si necesita obtener el tiempo UTC de esos, puede usar UTC().
setUTCHourslugar de setHoursobtener el tiempo Universal
setHourses peligroso ya que establece las horas locales, en lugar de las horas UTC.
Usando la biblioteca momentjs , esto se puede lograr con los métodos startOf()y endOf()en el objeto de fecha actual del momento, pasando la cadena 'day'como argumentos:
GMT local:
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()al final para obtener la fecha. var end = moment().endOf('day').toDate();
.unix()al final para obtener la marca de tiempo de Unix en segundos :) así:moment().startOf('day').unix()
moment(new Date()).endOf("day");, no funciona, pero moment().endOf("day");funciona.
moment-timezoney hacer esto: moment().tz('America/Chicago').startOf('day').toDate().
Usando la biblioteca luxon.js , se puede lograr lo mismo usando los métodos startOf y endOf pasando el 'día' como parámetro
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
elimine .toUTC () si solo necesita la hora local
y puedes preguntar por qué no moment.js , la respuesta está aquí para eso.
En MomentJs podemos declararlo así:
const start = moment().format('YYYY-MM-DD 00:00:01');
const end = moment().format('YYYY-MM-DD 23:59:59');
Si solo está interesado en las marcas de tiempo en GMT , también puede hacerlo, que puede adaptarse convenientemente para diferentes intervalos (hora 1000 * 60 * 60, 12 horas 1000 * 60 * 60 * 12, etc.)
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
FYI (versión fusionada de Tvanfosson)
devolverá la fecha real => fecha cuando está llamando a la función
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()
}
}
// cómo utilizar
today.local.now(); //"2018-09-07T01:48:48.000Z" BAKU +04:00
today.iso.now(); // "2018-09-06T21:49:00.304Z" *
* es aplicable para el tipo de hora instantánea en Java8 que convierte su hora local automáticamente según su región (si está planeando, escriba la aplicación global)
Prefiero usar la biblioteca date-fns para la manipulación de fechas. Es realmente una gran herramienta modular y consistente. Puede comenzar y finalizar el día de esta manera:
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());para asegurarse de que tiene el mismo punto en el tiempo: en caso de que cambie las fechas entre el inicio y el final de la inicialización, puede suceder, solo un buen hábito para entrar