en PHP existe la función date() la cual nos permite formatear la salida de una fecha, esta función no existe en JavaScript mas si el objeto Date que nos permite trabajar con fechas, ya anteriormente postié una función que creo que si se me hubiera ocurrido antes migrar date de PHP a JavaScript me hubiera ahorrado esa función :P, me faltaron algunas opciones de migrar, ya que por lo pronto no las necesito :P y todavía no entiendo muy bien como para que se usan y como obtenerlas manejando el objeto Date.
date(String Format, Date date, JSON dayLabels)
Descripción:
Retorna un String con una fecha formateada según el parámetro Format
Esta basada en la función date de PHP
Parámetros:
-
Format: es un string que contiene el patrón que con el cual se deberá formatear
el objeto date, ejemplo: ‘d-m-Y’ o ‘D-M-Y h:m:s”
Se soportan los siguientes parámetros son exactamente los mismo que en PHP:
- Día
- d: Día del mes 2 dígitos 01 a 31
- D: String del día de la semana en tres letras
- j: Día del mes sin ceros iniciales
- l: Día en del día de la semana
- N: numero del día en la semana en formato ISO-8601 (1 para el lunes y 7 para el domingo
-
* S: terminación en ingles st,nd,rd o th //falta de implementar
- w: día de la semana 0 para domingo 6 para sábado
- z: el día del año iniciando de 0
- Semana
* W: semana en el año // Falta de implementar se encontré algunos bugs en el calculo
- Mes
- F: Mes en texto completo
- m: mes del año representado en 2 caracteres 01 – 12
- M: nombre corto del mes (3 caracteres)
- n: mes del año representado en 1 o 12 caracteres (sin cerro iniciales)
- t: numero de días en el mes 28-31
-
Year
- L: cuando un año es bisiesto 1 para bisiesto 0 cuando no lo es
- Y: el año representado en 4 dígitos 1999 o2003
- y: el año representado en 2 dígitos 99 o 03
-
Time
- a: am o pm
- A: AM o PM
- g: hora en 12 si cero inicial 1-12
- G: hora en 24 sin cero inicial 0-23
- h: hora en 12 con cero inicial 01-12
- H: hora en 24 con cero inicial 00 – 23
- i: minutos con cero inicial 00-59
- s: segundos, con cero inicial 00-59
- u: micro-segundos
-
date: (opcional)es un objeto Date que indique la fecha a formatear
si se omite se operara con la fecha actual en el reloj del cliente
-
JSON dayLabels: (Opcional), es un JSON que nos permite pasar los arreglos con
las etiquetas de los nombres de los meses y días, por defecto se
trabaja con los nombres en Ingles
Los arreglos que puede contener dayLables son:
- arrMoths: Array con el nombre de los meses por defecto
["January", "February", "March", "April",
"May", "June", "July", "August", "September",
"October", "November", "December"];
- arrDays:Array con los nombres de los dias, por defecto:
["Sunday", "Monday", "Tuesday", "Wednesday",
"Thursday","Friday", "Saturday"]
- arrDaysShort:Array con los nombres cortos(3 caracteres) de los dias
por defecto: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri",
"Sat"];
- arrDayMothsShort:Array con los nombres cortos(3 caractres) de los meses
por defecto: ["Jan", "Feb",
"Mar", "Apr", "May", "Jun", "Jul", "Aug",
"Sep", "Oct", "Nov", "Dec"]
Ejemplos:
alert(date('d/m/Y'));
fecha=new Date(2010,2,7,17,30,5);
alert(date('d/m/Y',fecha));
alert(date('F, j Y',fecha));
labels={
arrMoths:["Enero", "Febrero", "Marzo", "Abril",
"Mayo", "Junio", "Julio", "Agosto", "Septiember",
"Octube", "Noviember", "Diciember"],
arrDays:["Domingo", "Lunes", "Martes", "Miercoles", "Jueves", "Viernes", "Sabado"]
}
alert(date('l j \de F \de\l Y',fecha,labels));
alert(date('d/M/Y H:i:s',fecha));
alert(date('d/M/Y h:i:s A',fecha));
Download
/**
* <p><b>date(String Format, Date date, JSON dayLabels)</b></p>
*
* <p><b>Descripción:</b><br/>
* Retorna un String con una fecha formateada según el parámetro Format<br/>
* Esta basada en <a href="http://php.net/manual/en/function.date.php">la función date de PHP</a>
* </p>
*
* <b>Parámetros:</b>
* <ul>
* <li>
* <p><b>Format:</b> es un string que contiene el patrón que con el cual se deberá formatear
* el objeto date, ejemplo: 'd-m-Y' o 'D-M-Y h:m:s"</p>
*
* <p>Se soportan los siguientes parámetros son exactamente los mismo que en PHP:</p>
* <ul>
* <li><b>Dia</b>
* <ul>
* <li> <b>d</b>: Día del mes 2 dígitos 01 a 31</li>
* <li> <b>D:</b> String del día de la semana en tres letras</li>
* <li> <b>j:</b> Día del mes sin ceros iniciales</li>
* <li> <b>l:</b> Día en del día de la semana</li>
* <li> <b>N:</b> numero del día en la semana en formato ISO-8601 (1 para el lunes y 7 para el domingo</li>
* <li> <strike><b>* S:</b> terminación en ingles st,nd,rd o th //falta de implementar</strike></li>
* <li> <b>w:</b> día de la semana 0 para domingo 6 para sábado</li>
* <li> <b>z:</b> el día del año iniciando de 0</li>
* </ul>
* </li>
* <li><b>Semana</b>
* <ul>
* <li><strike><b>* W:</b> semana en el año // Falta de implementar se encontré algunos bugs en el calculo</strike></li>
* </ul>
* </li>
* <li><b>Mes</b>
* <ul>
* <li><b>F:</b> Mes en texto completo</li>
* <li><b>m:</b> mes del año representado en 2 caracteres 01 - 12</li>
* <li><b>M:</b> nombre corto del mes (3 caracteres)</li>
* <li><b>n:</b> mes del año representado en 1 o 12 caracteres (sin cerro iniciales)</li>
* <li><b>t:</b> numero de días en el mes 28-31 </li>
* </ul>
* <li>
* <b>Year</b>
* <ul>
* <li><b>L:</b> cuando un año es bisiesto 1 para bisiesto 0 cuando no lo es</li>
* <li><b>Y:</b> el año representado en 4 dígitos 1999 o2003</li>
* <li><b>y:</b> el año representado en 2 dígitos 99 o 03</li>
* </ul>
* </li>
* <li>
* <b>Time</b>
* <ul>
* <li><b>a:</b> am o pm</li>
* <li><b>A:</b> AM o PM</li>
* <li><b>g:</b> hora en 12 si cero inicial 1-12</li>
* <li><b>G:</b> hora en 24 sin cero inicial 0-23</li>
* <li><b>h:</b> hora en 12 con cero inicial 01-12</li>
* <li><b>H:</b> hora en 24 con cero inicial 00 - 23</li>
* <li><b>i:</b> minutos con cero inicial 00-59</li>
* <li><b>s:</b> segundos, con cero inicial 00-59</li>
* <li><b>u:</b> micro-segundos</li>
* </ul>
* </ul>
*
* </li>
* <li>
* <div><b>date:</b> (opcional)es un objeto Date que indique la fecha a formatear
* si se omite se operara con la fecha actual en el reloj del cliente
* </div>
* </li>
* <li>
* <p>JSON dayLabels: (Opcional), es un JSON que nos permite pasar los arreglos con
* las etiquetas de los nombres de los meses y días, por defecto se
* trabaja con los nombres en Ingles
* </p>
* <p> Los arreglos que puede contener dayLables son:</p>
* <ul>
* <li><b>arrMoths:</b> Array con el nombre de los meses por defecto
* ["January", "February", "March", "April",
* "May", "June", "July", "August", "September",
* "October", "November", "December"];
* </li>
* <li><b>arrDays:</b>Array con los nombres de los dias, por defecto:
* ["Sunday", "Monday", "Tuesday", "Wednesday",
* "Thursday","Friday", "Saturday"]
* </li>
* <li><b>arrDaysShort:</b>Array con los nombres cortos(3 caracteres) de los días
* por defecto: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri",
* "Sat"];
* </li>
* <li><b>arrDayMothsShort:</b>Array con los nombres cortos(3 caracteres) de los meses
* por defecto: ["Jan", "Feb",
* "Mar", "Apr", "May", "Jun", "Jul", "Aug",
* "Sep", "Oct", "Nov", "Dec"]
* </li>
* </ul>
* </li>
* </ul>
* <p>
* <b>Ejemplos</b><br/>
* alert(date('d/m/Y'));<br/>
* fecha=new Date(2010,2,7,17,30,5);<br/>
* alert(date('d/m/Y',fecha));<br/>
* alert(date('F, j Y',fecha));<br/>
* labels={<br/>
* arrMoths:["Enero", "Febrero", "Marzo", "Abril",<br/>
* "Mayo", "Junio", "Julio", "Agosto", "Septiember",<br/>
* "Octube", "Noviember", "Diciember"],<br/>
* arrDays:["Domingo", "Lunes", "Martes", "Miercoles", "Jueves", "Viernes", "Sabado"]<br/>
* }<br/>
* alert(date('l j \de F \de\l Y',fecha,labels));<br/>
* alert(date('d/M/Y H:i:s',fecha));<br/>
* alert(date('d/M/Y h:i:s A',fecha));<br/>
*
* </p>
* <div>By JfcoDíaz<br/>
* wariodiaz@gmail.com<br/>
* <a href="http://www.devtics.com.mx"> www.devtics.com.mx </a><br/>
* 17 Marzo del 2010
* </div>
*/
function date(strFormat,objDate,jsonTexts){
objDate = (objDate)?objDate:new Date();
function hr12(objDate,bwith0){
var hr=objDate.getHours();
hr = (hr<13)?hr:hr-12;
return (bwith0)? ((hr<10)?"0"+hr:hr) :hr;
}
jsonTexts = (jsonTexts==undefined)?{}:jsonTexts;
jsonTexts.arrMoths = (jsonTexts.arrMoths)?jsonTexts.arrMoths:
["January", "February", "March", "April",
"May", "June", "July", "August", "September",
"October", "November", "December"];
jsonTexts.arrDays = (jsonTexts.arrDays)?jsonTexts.arrDays:
["Sunday", "Monday", "Tuesday", "Wednesday",
"Thursday","Friday", "Saturday"];
jsonTexts.arrDaysShort = (jsonTexts.arrDaysShort)?jsonTexts.arrDaysShort:
["Sun", "Mon", "Tue", "Wed", "Thu", "Fri",
"Sat"];
jsonTexts.arrDayMothsShort=(jsonTexts.arrDayMothsShort)?
jsonTexts.arrDayMothsShort:["Jan", "Feb",
"Mar", "Apr", "May", "Jun", "Jul", "Aug",
"Sep", "Oct", "Nov", "Dec"];
var c ,dt , str="";
for(i=0;c=strFormat[i++];){
switch(c){
case "\":str+=strFormat[i++];break;
case "c":break;
case "d":dt=objDate.getDate();
str+=(dt<10)?"0"+dt:dt;
break;
case "D":
str+= jsonTexts.arrDaysShort[ objDate.getDay() ];
break;
case "j":str+= objDate.getDate(); break;
case "l":str+= jsonTexts.arrDays[objDate.getDay()]; break;
case "N":
dt=objDate.getDay();
str+=(dt==0)?7:dt;
break;
case "S":break;
case "w":str+=objDate.getDay();break;
case "z":
dt=new Date(objDate.getFullYear(), 0, 1);
str+= Math.floor(((((objDate.valueOf() - dt.valueOf())/1000)/60)/60)/24);
break;
case "W":
//pendiente de implementar
// dt = new Date(objDate.getFullYear(),0,1);
//
// str+= (Math.ceil(
// ( (parseInt(date("z",objDate),10))/7)))+
// ((dt.getDay()>0)? -1 : 0);
// str+=objDate.getWeekNumber();
break;
case "F":
str+=jsonTexts.arrMoths[ objDate.getMonth() ];
break;
case "m":
dt=objDate.getMonth()+1;
str+=(dt<10)?"0"+dt:dt;
break;
case "M":
str+= jsonTexts.arrDayMothsShort[ objDate.getMonth() ];
break;
case "n":str+=objDate.getMonth()+1;
break;
case "t":
switch(objDate.getMonth()+1){
case 4: case 6: case 9: case 11:str+="30"; break;
case 2:
str+=(date("L",objDate)==="1")? "29" : "28";
break;
default :str+="31";
}
break;
case "L":
dt=objDate.getFullYear();
str+=((dt % 4 == 0 && dt % 100 != 0) || dt % 400 == 0)?"1":"0";
break;
case "Y":
str+=objDate.getFullYear();
break;
case "y":
str+= objDate.getFullYear().toString(). substr(2,2);
break;
case "a":
str+=(objDate.getHours()<12)?'am':'pm';
break;
case "A":
str+=(objDate.getHours()<12)?'AM':'PM';
break;
case "g":
str+=hr12(objDate);
break;
case "G":
str+=objDate.getHours();
break;
case "h":
str+=hr12(objDate,true);
break;
case "H":
dt=objDate.getHours();
str+= (dt<10)? "0"+dt : dt;
break;
case "i":
dt=objDate.getMinutes();
str+=(dt<10)?"0"+dt:dt;
break;
case "s":
dt=objDate.getSeconds();
str+=(dt<10)?"0"+dt:dt;
break;
case "u":
str+=objDate.getMilliseconds();
break;
default :str+= c;break;
}
}
return str;
}