¿Cuál es la mejor forma de calcular el tiempo transcurrido desde la (última) medianoche en ms?Cómo calcular ms desde la medianoche en Javascript
Respuesta
Cree una nueva fecha utilizando el día/mes/año actual, y obtenga la diferencia.
var now = new Date(),
then = new Date(
now.getFullYear(),
now.getMonth(),
now.getDate(),
0,0,0),
diff = now.getTime() - then.getTime(); // difference in milliseconds
Puede hacer eso mucho más fácil al copiar el objeto de fecha y establecer la hora en 00:00:00. Su respuesta puede ser incorrecta si el reloj marca entre crear las dos fechas. – RobG
Funciona mal en los casos '2/365 * 100%' debido al cambio de horario de verano – Dan
@Dan: no, el objeto Date usa marcas de tiempo que son indiferentes a DST. Agregue el hecho de que el horario de verano cambia en algún momento temprano de la mañana, pero no a la medianoche, está bien –
var today = new Date();
var d = new Date(today.getFullYear(), today.getMonth(), today.getDate(), 0, 0, 0, 0);
var difference = today.getTime() - d.getTime();
segundos desde la medianoche serían simplemente para mostrar la hora, pero en lugar de utilizar horas: minutos: segundos, todo se convierte en cuestión de segundos.
creo que esto debería hacerlo:
var now = new Date();
var hours = now.getHours()*(60*60);
var minutes = now.getMinutes()*60;
var seconds = now.getSeconds();
var secSinceMidnight = hours+minutes+seconds;
esto está mal en el horario de verano – Mala
@Mala ¿quiere decir que este código falla si la corrección de ahorro de luz diurna se aplicó la última medianoche? Entonces la respuesta de Andrew D. también falla – Dan
@Dan: esta respuesta supone que 8am significa 8 horas desde la medianoche, lo que no ocurre en los días en que comienza o termina el horario de verano. No he examinado detenidamente la respuesta de Andrew, pero en cualquier caso recomiendo la respuesta de RobG anterior, porque puedo confirmar que funciona, y no se ve afectada por un posible tic del reloj entre las dos declaraciones de fecha – Mala
var d=new Date();
// offset from midnight in Greenwich timezone
var msFromMidnightInGMT=d%86400000;
// offset from midnight in locale timezone
var msFromMidnightLocale=(d.getTime()-d.getTimezoneOffset()*60000)%86400000;
Un montón de respuestas hasta aquí otra:
var d = new Date(), e = new Date(d);
var msSinceMidnight = e - d.setHours(0,0,0,0);
En función:
function getMsSinceMidnight(d) {
var e = new Date(d);
return d - e.setHours(0,0,0,0);
}
alert(getMsSinceMidnight(new Date()));
Esta es buena. Maneja correctamente el horario de verano. – Mala
simple de escribir , si no te importa crear dos fechas.
var msSinceMidnight= new Date()-new Date().setHours(0,0,0,0);
Muchas respuestas excepto RobG's (recommended answer), Kolink's y Lai's son mal aquí
Veamos más de cerca juntos
Primer error
OptimusCrime y Andrew D. respuestas:
Como Mala sugested, si la corrección de ahorro de luz diurna se aplicó a la medianoche más cercana, obtenemos un valor incorrecto. Vamos depuración:
- Supongamos que es último domingo de marzo
- El tiempo se ha fijado a las 2 am.
- Si vemos las 10 horas del reloj, de hecho hay 11 horas pasaron desde la medianoche
- Pero en lugar Contamos
10 * 60 * 60 * 1000
ms - El truco se juega cuando la medianoche ocurre en diferente estado de horario de verano vigente en ese momento
segundo error
kennebeck's respuesta:
Como escribió RobG, el reloj puede marcar si obtiene la hora del sistema dos veces. Incluso podemos aparecer en diferentes fechas a veces.Puede reproducir este en un bucle:
for (var i = 0; true; i++) {
if ((new Date()).getTime() - (new Date()).getTime()) {
alert(i); // console.log(i); // for me it's about a 1000
break;
}
}
Tercer es mi trampa personal que posiblemente podría experimentar
Considere el siguiente código:
var d = new Date(),
msSinceMidnight = d - d.setHours(0,0,0,0);
msSinceMidnight
es siempre 0
como el objeto se cambia durante el cálculo antes de la operación de resta
Por fin, este código funciona:
var d = new Date(),
msSinceMidnight = d.getTime() - d.setHours(0,0,0,0);
- 1. Cómo obtener segundos transcurridos desde la medianoche
- 2. ¿Cómo puedo obtener milisegundos desde la medianoche UTC en C?
- 3. segundos utc desde la medianoche hasta la fecha
- 4. ¿Cómo actualizar un widget de aplicación en la medianoche?
- 5. ¿Cómo uso MS DIA SDK desde C#?
- 6. Seleccione las marcas de tiempo de hoy (desde medianoche) solo
- 7. -ms-transform para IE9 en JavaScript
- 8. ¿Cómo usar la base de datos SQLite desde MS Access?
- 9. Pegar desde MS Word en Textarea
- 10. Mysql Query solo hasta la medianoche
- 11. ¿Cómo calcular un ángulo desde puntos?
- 12. Python - ¿Cómo calcular el tiempo transcurrido desde la fecha X?
- 13. ¿Cómo calcular el ángulo de un vector desde la vertical?
- 14. ¿Cómo obtener el tiempo en milisegundos desde la época de Unix en Javascript?
- 15. ¿Cómo calcular la distancia desde un archivo GPX?
- 16. Calcular Complejidad Ciclomática para Javascript
- 17. ¿Cómo caducar una cookie usando Jquery a la medianoche?
- 18. Cambiar el orden de las imágenes a la medianoche
- 19. Cómo calcular dp desde píxeles en Android programáticamente
- 20. ¿Cuál es la mejor manera de inicializar una fecha de JavaScript a la medianoche?
- 21. ¿Cómo calcular la fragmentación?
- 22. Cómo iniciar en MS-Build
- 23. javascript: calcular x% de un número
- 24. Cómo consultar todos los registros creados hoy (medianoche UTC..Actualmente)
- 25. VBA: Cómo ejecutar otra aplicación desde MS Access
- 26. Cómo calcular gl_FragCoord en glsl
- 27. ¿Cómo calcular la media ponderada en R?
- 28. Cómo calcular la raíz cuadrada en python?
- 29. Llamando al Servicio WCF desde MS Access
- 30. Obtener html desde el portapapeles en javascript
[Fecha] (https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Date) Obtener un objeto de fecha para (último) la medianoche y restar "ahora" de él ... - Simplemente matemáticas simples – Andreas
@Areas Medianoche restado de ahora da un tiempo negativo;) –
¡Gracias muchachos! Kolnik, tu solución también da un tiempo negativo? – Olga