Soy un poco excursionista, pero trataré de dejar esto claro:
Estoy aburrido, así que estoy trabajando en un "shoutbox" y estoy un poco confundido por una cosa. Quiero obtener la hora en que se ingresa un mensaje y quiero asegurarme de obtener la hora del servidor, o al menos asegurarme de no obtener la hora local del usuario. Sé que no importa, ya que esta cosa no será utilizada por nadie además de mí, pero quiero ser minucioso. Revisé y probé algunas cosas, y creo que la única forma de hacerlo es obtener los milisegundos desde el 1 de enero de 1970 a las 00:00:00 UTC , ya que sería lo mismo para todos.
Lo estoy haciendo así:
var time = new Date(); var time = time.getTime(); Eso devuelve un número como 1294862756114 .
¿Hay alguna manera de convertir 1294862756114 a una fecha más legible, como DD/MM/YYYY HH:MM:SS ?
Entonces, básicamente, estoy buscando el equivalente de JavaScript de PHP's date(); función.
var time = new Date().getTime(); // get your number var date = new Date(time); // create Date object console.log(date.toString()); // result: Wed Jan 12 2011 12:42:46 GMT-0800 (PST)Si desea un formato personalizado para su fecha, le ofrezco una función simple :
var now = new Date; console.log( now.customFormat( "#DD#/#MM#/#YYYY# #hh#:#mm#:#ss#" ) );Estos son los tokens admitidos:
token: description: example: #YYYY# 4-digit year 1999 #YY# 2-digit year 99 #MMMM# full month name February #MMM# 3-letter month name Feb #MM# 2-digit month number 02 #M# month number 2 #DDDD# full weekday name Wednesday #DDD# 3-letter weekday name Wed #DD# 2-digit day number 09 #D# day number 9 #th# day ordinal suffix nd #hhhh# 2-digit 24-based hour 17 #hhh# military/24-based hour 17 #hh# 2-digit hour 05 #h# hour 5 #mm# 2-digit minute 07 #m# minute 7 #ss# 2-digit second 09 #s# second 9 #ampm# "am" or "pm" pm #AMPM# "AM" or "PM" PMY aquí está el código:
//*** This code is copyright 2002-2016 by Gavin Kistner, !@phrogz.net //*** It is covered under the license viewable at http://phrogz.net/JS/_ReuseLicense.txt Date.prototype.customFormat = function(formatString){ var YYYY,YY,MMMM,MMM,MM,M,DDDD,DDD,DD,D,hhhh,hhh,hh,h,mm,m,ss,s,ampm,AMPM,dMod,th; YY = ((YYYY=this.getFullYear())+"").slice(-2); MM = (M=this.getMonth()+1)<10?('0'+M):M; MMM = (MMMM=["January","February","March","April","May","June","July","August","September","October","November","December"][M-1]).substring(0,3); DD = (D=this.getDate())<10?('0'+D):D; DDD = (DDDD=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"][this.getDay()]).substring(0,3); th=(D>=10&&D<=20)?'th':((dMod=D%10)==1)?'st':(dMod==2)?'nd':(dMod==3)?'rd':'th'; formatString = formatString.replace("#YYYY#",YYYY).replace("#YY#",YY).replace("#MMMM#",MMMM).replace("#MMM#",MMM).replace("#MM#",MM).replace("#M#",M).replace("#DDDD#",DDDD).replace("#DDD#",DDD).replace("#DD#",DD).replace("#D#",D).replace("#th#",th); h=(hhh=this.getHours()); if (h==0) h=24; if (h>12) h-=12; hh = h<10?('0'+h):h; hhhh = hhh<10?('0'+hhh):hhh; AMPM=(ampm=hhh<12?'am':'pm').toUpperCase(); mm=(m=this.getMinutes())<10?('0'+m):m; ss=(s=this.getSeconds())<10?('0'+s):s; return formatString.replace("#hhhh#",hhhh).replace("#hhh#",hhh).replace("#hh#",hh).replace("#h#",h).replace("#mm#",mm).replace("#m#",m).replace("#ss#",ss).replace("#s#",s).replace("#ampm#",ampm).replace("#AMPM#",AMPM); };Simplemente puede usar la biblioteca Datejs para convertir la fecha al formato deseado.
He ejecutado un par de pruebas y funciona.
A continuación se muestra un fragmento que ilustra cómo puede lograrlo:
var d = new Date(1469433907836); d.toLocaleString(); // expected output: "7/25/2016, 1:35:07 PM" d.toLocaleDateString(); // expected output: "7/25/2016" d.toDateString(); // expected output: "Mon Jul 25 2016" d.toTimeString(); // expected output: "13:35:07 GMT+0530 (India Standard Time)" d.toLocaleTimeString(); // expected output: "1:35:07 PM"