Me sorprende que el objeto Date de JavaScript no implemente una función add de ningún tipo.
Simplemente quiero una función que pueda hacer esto:
var now = Date.now();
var fourHoursLater = now.addHours(4);
function Date.prototype.addHours(h) {
// how do I implement this?
}
Simplemente me gustaría algunos consejos en una dirección.
¿Necesito hacer un análisis de cadenas?
¿Puedo usar setTime?
¿Qué tal milisegundos?
Me gusta esto:
new Date(milliseconds + 4*3600*1000 /*4 hrs in ms*/)?
Sin embargo, esto parece realmente hackeo, ¿e incluso funciona?
javascript
datetime
Jeff Meatball Yang
fuente
fuente
Prueba:
fuente
var date = new Date(2012, 10, 22, 23, 0, 1); date.toString(); // Thu Nov 22 2012 23:00:01 GMT+0100 (CET) date.setHours(date.getHours() + 1); date.toString(); // Fri Nov 23 2012 00:00:01 GMT+0100 (CET)
También funciona bien con setMinutes ()El siguiente código es para agregar 4 horas hasta la fecha (por ejemplo, la fecha de hoy)
No causará error si intentas agregar 4 a 23 (ver los documentos ):
fuente
setTime
osetUTCHour
.Probablemente sea mejor hacer que el método addHours sea inmutable devolviendo una copia del objeto Date en lugar de mutar su parámetro.
De esta manera, puede encadenar un montón de llamadas a métodos sin preocuparse por el estado.
fuente
add*
se usa comúnmente para mutar el objeto en sí.add
se usa mucho en laDateTime
clase .NET framework y tiene el mismo significado que el+
(más) en matemáticas.currentDate.addHours(1)
<- Desde mi instinto de programación, espero que elcurrentDate
valor cambie, pero en su implementación, no lo haría. En cuanto a por qué estoy sugiriendo cambiar el nombre o cambiar su firma a algoadd
La versión sugerida por kennebec fallará al cambiar hacia o desde el horario de verano, ya que es el número de hora que se establece.
agregará
h
horas a lasthis
peculiaridades del sistema de tiempo independiente. El método de Jason Harwig también funciona.fuente
Puede usar momentjs http://momentjs.com/ Library.
fuente
También creo que el objeto original no debe modificarse. Entonces, para ahorrar mano de obra futura, aquí hay una solución combinada basada en las respuestas de Jason Harwig y Tahir Hasan :
fuente
Hay un complemento en la biblioteca Datejs .
Y aquí están los métodos de fecha de JavaScript . Kennebec mencionó sabiamente getHours () y setHours ();
fuente
Compruebe si aún no está definido; de lo contrario, lo define en el prototipo de fecha:
fuente
Otra forma de manejar esto es convertir la fecha a unixtime (epoch), luego agregar el equivalente en (mili) segundos, luego convertirlo nuevamente. De esta forma, puede manejar las transiciones de día y mes, como agregar 4 horas a 21, lo que debería resultar en el día siguiente, 01:00.
fuente
Para una función simple de agregar / restar hora / minuto en javascript, intente esto:
Esto se puede usar sin parámetros para obtener la hora actual
o con parámetros para obtener el tiempo con los minutos / horas agregados
incluso el tiempo negativo funciona
esta función devuelve una matriz de
fuente
SPRBRN es correcto. Para contabilizar el inicio / fin del mes y año, debe convertir a Epoch y viceversa.
Así es como lo haces:
o hágalo en una línea (donde los nombres de las variables son los mismos que los anteriores:
fuente
Esta es una manera fácil de obtener un valor de datos incrementado o disminuido.
fuente
Un poco desordenado, pero funciona!
Dado un formato de fecha como este: 2019-04-03T15: 58
Su salida sería: 2019-04-03T16: 58
fuente