2011-12-26 14 views

Respuesta

252
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 la hora UTC de aquellos, puede utilizar UTC().

+9

Recomendaría 'var end = new Date (start.getTime());' para asegurarse de tener el mismo punto en el tiempo; en caso de que cambie las fechas entre la inicialización y la inicialización, puede suceder, simplemente es un buen hábito para entrar en –

+0

@MartynDavis cuando todo es operación normal, generalmente entre 0-2 ticks ocurren entre ellos, pero depende de qué tan ocupada esté la CPU, entonces tiene sentido hacerlo si le preocupa la precisión de 1 tilde. –

+0

También recomendaría usar 'setUTCHours' en lugar de' setHours' para obtener el horario universal – sidonaldson

-8
function getTime(zone, success) { 

    var url = 'http://json-time.appspot.com/time.json?tz=' + zone, 
     ud = 'json' + (+new Date()); 
    window[ud]= function(o){ 
     success && success(new Date(o.datetime)); 
    }; 
    document.getElementsByTagName('head')[0].appendChild((function(){ 
     var s = document.createElement('script'); 
     s.type = 'text/javascript'; 
     s.src = url + '&callback=' + ud; 
     return s; 
    })()); 
} 

getTime('GMT', function(time){ 

    // This is where you do whatever you want with the time: 
    alert(time); 
}); 

Referencia: Getting the current GMT world time

134

El uso de la biblioteca momentjs, esto se puede lograr con los métodos startOf() y endOf() en objeto de fecha actual del momento, pasando la cadena 'day' como argumentos:

local GMT:

var start = moment().startOf('day'); // set to 12:00 am today 
var end = moment().endOf('day'); // set to 23:59 pm today 

For UTC:

var start = moment.utc().startOf('day'); 
var end = moment.utc().endOf('day'); 
+16

momentjs es la ventanilla única para todo lo relacionado con el manejo del tiempo de JavaScript. Siempre vale la pena la importación. –

+4

Y deberíamos usar '.toDate()' al final para obtener la fecha. 'var end = moment(). EndOf ('day'). ToDate();' – YaTaras

+4

agrega '.unix()' al final para obtener la marca de tiempo unix en segundos :) como este: 'moment(). StartOf ('día'). unix() ' –

2

El uso de la biblioteca luxon.js, mismo se puede conseguir utilizando 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 

eliminar .toUTC() si sólo se necesita la hora local

y usted puede preguntar por qué no moment.js, la respuesta es here para eso.

+0

¿Quiere decir http://moment.github.io/luxon/docs/manual/why.html? –

+0

@ ed-norris tx actualizó el enlace – tk120404

0

Prefiero usar la biblioteca date-fns para manipular la fecha. Es una gran herramienta modular y consistente. Puede obtener iniciar 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>

1

Si no eres más que interesado en las marcas de tiempo también se puede hacer esto, que puede ser convenientemente adaptados para diferentes intervalos (horas: 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 
Cuestiones relacionadas