obtener new hora from fechas fecha comparar actual javascript

new - string to date javascript



¿Cuál es la mejor manera de inicializar una fecha de JavaScript a la medianoche? (10)

¿Cuál es la forma más sencilla de obtener una instancia de la nueva Fecha () pero establecer la hora a la medianoche?


Añadiendo utilidad al ejemplo de @Dan Dan, tuve la necesidad de encontrar el próximo mediodía o medianoche.

var d = new Date(); if(d.getHours() < 12) { d.setHours(12,0,0,0); // next midnight/midday is midday } else { d.setHours(24,0,0,0); // next midnight/midday is midnight }

Esto me permitió establecer un límite de frecuencia para un evento, y solo permitió que ocurriera una vez en la mañana y una vez en la tarde para cualquier visitante de mi sitio. La fecha de captura se utilizó para establecer la caducidad de la cookie.


En caso de que ya tenga d3.js como una dependencia en su proyecto, o no le importe traerlo, d3-time (la biblioteca d3.js es modular a partir de la v4.0.0 ) tiene Intervals .

Pueden resultar útiles cuando se configuran las fechas en valores "predeterminados", por ejemplo, medianoche, 0,00 segundos, el primero del mes, etc.

var d = new Date(); // Wed Aug 02 2017 15:01:07 GMT+0200 (CEST) d3.timeHour(d) // Wed Aug 02 2017 00:00:00 GMT+0200 (CEST) d3.timeMonth(d) // Tue Aug 01 2017 00:00:00 GMT+0200 (CEST)


He hecho un par de prototipos para encargarme de esto.

// This is a safety check to make sure the prototype is not already defined. Function.prototype.method = function (name, func) { if (!this.prototype[name]) { this.prototype[name] = func; return this; } }; Date.method(''endOfDay'', function () { var date = new Date(this); date.setHours(23, 59, 59, 999); return date; }); Date.method(''startOfDay'', function () { var date = new Date(this); date.setHours(0, 0, 0, 0); return date; });

Si no desea el control de seguridad, puede utilizar

Date.prototype.startOfDay = function(){ /*Method body here*/ };

Ejemplo de uso:

var date = new Date($.now()); // $.now() requires jQuery console.log(''startOfDay: '' + date.startOfDay()); console.log(''endOfDay: '' + date.endOfDay());


Probablemente puedas usar

new Date().setUTCHours(0,0,0,0)

Si necesitas el valor solo una vez.


Si los cálculos con fechas de verano causan a menudo 1 hora más o una hora menos que la medianoche (CEST). Esto causa una diferencia de 1 día cuando regresan las fechas. Así que las fechas tienen que redondear a la medianoche más cercana. Entonces el código será (ths to jamisOn):

var d = new Date(); if(d.getHours() < 12) { d.setHours(0,0,0,0); // previous midnight day } else { d.setHours(24,0,0,0); // next midnight day }


Solo quería aclarar que el fragmento de respuesta aceptada da la medianoche más cercana en el pasado :

var d = new Date(); d.setHours(0,0,0,0); // last midnight

Si desea obtener la medianoche más cercana en el futuro , use el siguiente código:

var d = new Date(); d.setHours(24,0,0,0); // next midnight


Solo voy a agregar esto aquí porque llegué a esta página en busca de cómo hacer esto en el momento. moment.js y otros también pueden hacerlo.

[Razón: la palabra "momento" ya aparece en otra parte de esta página, por lo que los motores de búsqueda dirigen aquí, y moment.js está lo suficientemente extendido como para justificar que se cubra la frecuencia con que se menciona en otras preguntas de SO relacionadas con la fecha]

Así, en la versión 2.0.0 y superior:

date.startOf(''day'');

Para versiones anteriores:

date.sod();

Docs:

http://momentjs.com/docs/#/manipulating/start-of/


Una sola línea para configuraciones de objetos:

new Date(new Date().setHours(0,0,0,0));

Al crear un elemento:

dateFieldConfig = { name: "mydate", value: new Date( new Date(). setHours( 0, 0, 0, 0)), }


El método setHours puede tomar minutes opcionales, seconds y argumentos ms , por ejemplo:

var d = new Date(); d.setHours(0,0,0,0);

Eso establecerá la hora en 00:00:00.000 de su zona horaria actual . Si desea trabajar en hora UTC, puede usar el método setUTCHours .


var a = new Array(); var b = new Array(); var c = new Array(); var date = new Date().toJSON(); a = date.split("T"); a = a[0]; b = a.split("-"); var currentDate = new Date(b[0],b[1] , b[2] -29 ,-19,30,0).toJSON(); c = currentDate.split("."); var newDate = c[0]; console.log(newDate);