obtener horas hora formato fechas fecha convertir comparar año actual javascript date date-manipulation

horas - formato de fecha en javascript



¿Cómo agregar 30 minutos a un objeto Fecha de JavaScript? (13)

Usando una biblioteca

Si está realizando una gran cantidad de trabajos de fecha, puede buscar bibliotecas de fecha de JavaScript como Datejs o Moment.js . Por ejemplo, con Moment.js, esto es simplemente:

var newDateObj = moment(oldDateObj).add(30, ''m'').toDate();

Javascript de vainilla

Esto es como la respuesta del caos , pero en una línea:

var newDateObj = new Date(oldDateObj.getTime() + diff*60000);

Donde diff es la diferencia en minutos que quieres de la oldDateObj de oldDateObj . Incluso puede ser negativo.

O como una función reutilizable, si necesita hacer esto en varios lugares:

function addMinutes(date, minutes) { return new Date(date.getTime() + minutes*60000); }

Tenga cuidado con la vainilla Javascript. ¡Las fechas son difíciles!

Puede pensar que puede agregar 24 horas a una fecha para obtener la fecha de mañana, ¿verdad? ¡Incorrecto!

addMinutes(myDate, 60*24); //DO NOT DO THIS

Resulta que, si el usuario observa el horario de verano, un día no es necesariamente de 24 horas. Hay un día al año que dura solo 23 horas, y un día al año que dura 25 horas. Por ejemplo, en la mayoría de los Estados Unidos y Canadá, 24 horas después de la medianoche, 2 de noviembre de 2014, sigue siendo el 2 de noviembre:

addMinutes(new Date(''2014-11-02''), 60*24); //In USA, prints 11pm on Nov 2, not 12am Nov 3!

Esta es la razón por la que usar una de las bibliotecas mencionadas anteriormente es una apuesta más segura si tiene que trabajar mucho con esto.

A continuación se muestra una versión más genérica de esta función que escribí. Todavía recomendaría el uso de una biblioteca, pero eso puede ser excesivo / imposible para su proyecto. La sintaxis se modela después de la función DATE_ADD de MySQL .

/** * Adds time to a date. Modelled after MySQL DATE_ADD function. * Example: dateAdd(new Date(), ''minute'', 30) //returns 30 minutes from now. * https://stackoverflow.com/a/1214753/18511 * * @param date Date to start with * @param interval One of: year, quarter, month, week, day, hour, minute, second * @param units Number of units of the given interval to add. */ function dateAdd(date, interval, units) { var ret = new Date(date); //don''t change original date var checkRollover = function() { if(ret.getDate() != date.getDate()) ret.setDate(0);}; switch(interval.toLowerCase()) { case ''year'' : ret.setFullYear(ret.getFullYear() + units); checkRollover(); break; case ''quarter'': ret.setMonth(ret.getMonth() + 3*units); checkRollover(); break; case ''month'' : ret.setMonth(ret.getMonth() + units); checkRollover(); break; case ''week'' : ret.setDate(ret.getDate() + 7*units); break; case ''day'' : ret.setDate(ret.getDate() + units); break; case ''hour'' : ret.setTime(ret.getTime() + units*3600000); break; case ''minute'' : ret.setTime(ret.getTime() + units*60000); break; case ''second'' : ret.setTime(ret.getTime() + units*1000); break; default : ret = undefined; break; } return ret; }

Trabajando jsFiddle demo .

Me gustaría obtener un objeto Date que es 30 minutos más tarde que otro objeto Date. ¿Cómo lo hago con JavaScript?


Aquí está la versión ES6 :

let getTimeAfter30Mins = () => { let timeAfter30Mins = new Date(); timeAfter30Mins = new Date(timeAfter30Mins.setMinutes(timeAfter30Mins.getMinutes() + 30)); };

Llámalo como

getTimeAfter30Mins();


Esto es lo que hago que parece funcionar bastante bien:

Date.prototype.addMinutes = function(minutes) { var copiedDate = new Date(this.getTime()); return new Date(copiedDate.getTime() + minutes * 60000); }

Entonces puedes llamar a esto así:

var now = new Date(); console.log(now.addMinutes(50));


La forma más fácil de resolver es reconocer que en javascript las fechas son solo números. Comienza 0 o ''Wed Dec 31 1969 18:00:00 GMT-0600 (CST) . Cada 1 representa un milisegundo. Puede sumar o restar milisegundos obteniendo el valor e instanciando una nueva fecha usando ese valor. Puedes manejarlo bastante fácil con esa mente.

const minutesToAdjust = 10; const millisecondsPerMinute = 60000; const originalDate = new Date(''11/20/2017 10:00 AM''); const modifiedDate1 = new Date(originalDate.valueOf() - (minutesToAdjust * millisecondsPerMinute)); const modifiedDate2 = new Date(originalDate.valueOf() + (minutesToAdjust * millisecondsPerMinute)); console.log(originalDate); // Mon Nov 20 2017 10:00:00 GMT-0600 (CST) console.log(modifiedDate1); // Mon Nov 20 2017 09:50:00 GMT-0600 (CST) console.log(modifiedDate2); // Mon Nov 20 2017 10:10:00 GMT-0600 (CST)


Para los perezosos como yo:

La respuesta de Kip (desde arriba) en coffeescript, usando un "enum", y operando en el mismo objeto:

Date.UNIT = YEAR: 0 QUARTER: 1 MONTH: 2 WEEK: 3 DAY: 4 HOUR: 5 MINUTE: 6 SECOND: 7 Date::add = (unit, quantity) -> switch unit when Date.UNIT.YEAR then @setFullYear(@getFullYear() + quantity) when Date.UNIT.QUARTER then @setMonth(@getMonth() + (3 * quantity)) when Date.UNIT.MONTH then @setMonth(@getMonth() + quantity) when Date.UNIT.WEEK then @setDate(@getDate() + (7 * quantity)) when Date.UNIT.DAY then @setDate(@getDate() + quantity) when Date.UNIT.HOUR then @setTime(@getTime() + (3600000 * quantity)) when Date.UNIT.MINUTE then @setTime(@getTime() + (60000 * quantity)) when Date.UNIT.SECOND then @setTime(@getTime() + (1000 * quantity)) else throw new Error "Unrecognized unit provided" @ # for chaining


Siempre creo 7 funciones, para trabajar con la fecha en JS: addSeconds, addMinutes, addHours, addDays, addWeeks, addMonths, addYears.

Puedes ver un ejemplo aquí: http://jsfiddle.net/tiagoajacobi/YHA8x/

Cómo utilizar:

var now = new Date(); console.log(now.addMinutes(30)); console.log(now.addWeeks(3));

Estas son las funciones:

Date.prototype.addSeconds = function(seconds) { this.setSeconds(this.getSeconds() + seconds); return this; }; Date.prototype.addMinutes = function(minutes) { this.setMinutes(this.getMinutes() + minutes); return this; }; Date.prototype.addHours = function(hours) { this.setHours(this.getHours() + hours); return this; }; Date.prototype.addDays = function(days) { this.setDate(this.getDate() + days); return this; }; Date.prototype.addWeeks = function(weeks) { this.addDays(weeks*7); return this; }; Date.prototype.addMonths = function (months) { var dt = this.getDate(); this.setMonth(this.getMonth() + months); var currDt = this.getDate(); if (dt !== currDt) { this.addDays(-currDt); } return this; }; Date.prototype.addYears = function(years) { var dt = this.getDate(); this.setFullYear(this.getFullYear() + years); var currDt = this.getDate(); if (dt !== currDt) { this.addDays(-currDt); } return this; };


Siento que muchas de las respuestas aquí carecen de un componente creativo, muy necesario para los cálculos del viaje en el tiempo. Os presento mi solución para una traducción temporal de 30 minutos.

(jsfiddle here )

function fluxCapacitor(n) { var delta,sigma=0,beta="ge"; (function(K,z){ (function(a,b,c){ beta=beta+"tT"; switch(b.shift()) { case''3'':return z(''0'',a,c,b.shift(),1); case''0'':return z(''3'',a,c,b.pop()); case''5'':return z(''2'',a,c,b[0],1); case''1'':return z(''4'',a,c,b.shift()); case''2'':return z(''5'',a,c,b.pop()); case''4'':return z(''1'',a,c,b.pop(),1); } })(K.pop(),K.pop().split(''''),K.pop()); })(n.toString().split('':''),function(b,a,c,b1,gamma){ delta=[c,b+b1,a];sigma+=gamma?3600000:0; beta=beta+"im"; }); beta=beta+"e"; return new Date (sigma+(new Date( delta.join('':'')))[beta]()); }


Solo otra opción, que escribí:

DP_DateExtensions Library

Es excesivo si este es todo el procesamiento de fecha que necesita, pero hará lo que quiera.

Admite el formateo de fecha / hora, datos matemáticos de fecha (sumar / restar partes de fecha), comparación de fecha, análisis de fecha, etc. Es de código abierto.


Tal vez algo como esto?

var d = new Date(); var v = new Date(); v.setMinutes(d.getMinutes()+30);


Utilice una biblioteca existente conocida para manejar las peculiaridades involucradas en el manejo de cálculos de tiempo. Mi favorito actual es Moment.js .

<script src="//cdnjs.cloudflare.com/ajax/libs/moment.js/2.13.0/moment.js"></script> <script> var now = moment(); // get "now" console.log(now.toDate()); // show original date var thirty = moment(now).add(30,"minutes"); // clone "now" object and add 30 minutes, taking into account weirdness like crossing DST boundries or leap-days, -minutes, -seconds. console.log(thirty.toDate()); // show new date </script>


var d1 = new Date (), d2 = new Date ( d1 ); d2.setMinutes ( d1.getMinutes() + 30 ); alert ( d2 );


var newDateObj = new Date(); newDateObj.setTime(oldDateObj.getTime() + (30 * 60 * 1000));


var now = new Date(); now.setMinutes(now.getMinutes() + 30);