Todos en algún momento nos hemos visto en la obligación de guardar la fecha/hora de alguna transacción. Por seguridad lo preferible es hacer dicho calculo en el back-end, pero si la seguridad no es tan importante acá la herramienta que necesitas para restar o sumar horas o días a la fecha actual.
Primero la siguiente función, que nos permitirá mostrar las horas, minutos o días de la fecha con dos carácteres en vez de uno:
Number.prototype.double = function () { var nm = String(this); return (nm == '0') ? nm : (nm.length < 2) ? '0' + nm : nm; }; Number(0).double(); // Devuelve '0' Number(3).double(); // Devuelve '03' (32).double(); // Devuelve '32' (589).double(); // Devuelve '589' var n = 47; n.double(); // Devuelve '47' |
OK, ahora a lo que vinimos:
function xDateTime (cnf) { if (!cnf) cnf = {}; var dte = new Date(); var dteD = dte.getDate(), dteM = dte.getMonth() + 1, dteY = dte.getFullYear(); var tme = dte.getTime(), nDte = dte.setTime(parseInt(tme + parseInt((cnf.hours ? cnf.hours : 0) * 60 * 60 * 1000))); dteD = dte.getDate().double(); dteM = dte.getMonth() + 1; dteY = dte.getFullYear(); var tmeH = (dte.getHours() >= 12 ? dte.getHours()-12 : dte.getHours()).double(), tmeM = dte.getMinutes().double(), tmeS = dte.getSeconds().double(); var rtn = '', rtnD = dteD + '/' + dteM + '/' + dteY, rtnT = tmeH + ':' + tmeM + ':' + tmeS + (dte.getHours() >= 12 ? 'PM' : 'AM'); switch (cnf.type) { case 'd': rtn = rtnD; break; case 't': rtn = rtnT; break; case 'dt': rtn = rtnD + ' ' + rtnT; break; case 'td': rtn = rtnT + ' ' + rtnD; break; default: rtn = rtnD + ' ' + rtnT; }; return rtn; }; |
Para recibir la hora o fecha, aplicamos así:
xDateTime(); xDateTime({ type:'d' }); xDateTime({ type:'t' }); xDateTime({ type:'dt' }); xDateTime({ type:'td' }); |
Si necesitamos que la función devuelva una hora o fecha adelantada, aplicamos la cantidad de horas que necesitamos adelantar:
xDateTime({ hours:5 }); xDateTime({ hours:12 }); xDateTime({ hours:24 }); xDateTime({ hours:36 }); xDateTime({ hours:48 }); |
Similar con una fecha atrasada:
xDateTime({ hours:-24 }); xDateTime({ hours:-36 }); xDateTime({ hours:-48 }); |
Combinando la aplicación de los parámetros:
xDateTime({ type:'t', hours:5 }); xDateTime({ type:'d', hours:-36 }); xDateTime({ type:'d', hours:-48 }); xDateTime({ type:'dt', hours:24 }); |