2011-01-12 6 views
109

ich ein bisschen ein Wanderer bin, aber ich werde versuchen, dies klar zu halten -Konvertieren von Millisekunden auf ein Datum (jQuery/JavaScript)

Mir ist langweilig, so arbeite ich an einem „Shoutbox "Und ich bin ein wenig verwirrt wegen einer Sache. Ich möchte die Uhrzeit erhalten, zu der eine Nachricht eingegeben wird, und ich möchte sicherstellen, dass ich die Serverzeit bekomme, oder zumindest sicherstellen, dass ich nicht die Ortszeit des Benutzers erhalte. Ich weiß, dass es egal ist, da dieses Ding von niemandem außer mir benutzt wird, aber ich möchte gründlich sein. Ich habe mich umgesehen und ein paar Dinge getestet, und ich denke, der einzige Weg, dies zu tun, ist, die Millisekunden seit/1970 zu bekommen, oder was auch immer es ist, denn das wäre für alle gleich.

Ich mache das etwa so:

var time = new Date(); 
var time = time.getTime(); 

, dass eine Reihe wie 1294862756114 zurückgibt.

Gibt es eine Möglichkeit, 1294862756114 in ein lesbareres Datum zu konvertieren, wie DD/MM/YYYY HH:MM:SS?

Also, im Grunde bin ich auf der Suche nach JavaScript-Entsprechung von PHP date(); Funktion.

+2

Wenn Sie nicht lokale Zeit haben möchten, warum verwenden Sie Javascript dafür?solltest du es nicht beim Server machen? – fazo

+1

Überprüfen Sie diese Bibliothek aus -> http://www.datejs.com/ (Schauen Sie sich toString()) an – Ryan

+0

@fazo - Dies war mehr oder weniger ein Projekt, das mir helfen soll, besser mit JS zu werden, also versuche ich es benutze PHP so wenig wie möglich (hoffentlich nur zum Lesen/Schreiben von Daten in eine Datei). – Andrew

Antwort

195
var time = new Date().getTime(); 
var date = new Date(time); 
alert(date.toString()); // Wed Jan 12 2011 12:42:46 GMT-0800 (PST) 
+1

Gibt es einen Vorteil? es in zwei Schritten machen? (Erste Rechenzeit, dann als Argument für das Datum verwenden). Erhalten Sie nicht genau das gleiche Ergebnis nur durch * var date = new Date(); *? –

+6

Das OP war über die Umwandlung von einer Anzahl von Millisekunden in ein "Date" -Objekt, was die zweite Zeile tut. Die erste Zeile ist nur eine Möglichkeit, eine vernünftige Anzahl von Millisekunden zu erhalten. Sie können auch einfach 'var date = new Date (0);'. –

+1

Ja, du hast Recht. - Immer auf die ursprüngliche Frage schauen ... –

14

Unten finden Sie ein Snippet Sie das Datum auf eine gewünschte Ausgabeformat zu aktivieren:

var time = new Date(); 
var time = time.getTime(); 

var theyear = time.getFullYear(); 
var themonth = time.getMonth() + 1; 
var thetoday = time.getDate(); 

document.write("The date is: "); 
document.write(theyear + "/" + themonth + "/" + thetoday); 
+4

Sie benötigen Semikolons in JavaScript nicht. Es ist jedoch die beste Vorgehensweise, sie zu verwenden. Manchmal, ohne sie, kann sich die Bedeutung einer Aussage ändern (nicht in diesem Fall). Einige Code-Reviewer lieben sie eifrig und kämpfen für ihre Anwesenheit. Um die Dinge einfach zu halten, ist es am besten, sie immer zu benutzen. – Phil

130

Wenn Sie speziell für Ihre Datum der Formatierung möchte ich a simple function für sie zu bieten:

var now = new Date; 
console.log(now.customFormat("#DD#/#MM#/#YYYY# #hh#:#mm#:#ss#")); 

Hier sind die unterstützten Token:

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"    PM 

Und hier ist der Code:

//*** This code is copyright 2002-2016 by Gavin Kistner, [email protected] 
//*** 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); 
}; 
+0

Ich verwendete "#hhh # Militär/24-Stunden 17". Könnten Sie eine Lösung gipfeln, die auch führende Nullen in diesem Format hat? Vielen Dank! – tellob

+1

Ich habe diese Zeile nach AMPM hinzugefügt: if (hhh <10) hhh = ('0' + hhh); – tellob

+0

Vielleicht könnten Sie einfach Ihre Funktionen in der Post erweitern. – tellob

2

Versuchen Sie dieses:.

var time = new Date().toJSON();

0

Verwendung datejs

new Date() toString ('yyyy-MM-dh-mm-ss ");

15

Sie können uns einfach die Datejs Bibliothek, um das Datum in Ihr gewünschtes Format zu konvertieren.

Ich habe Paare von Test laufen und es funktioniert.

Unten finden Sie eine Snippet veranschaulicht, wie Sie das erreichen können:

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" 
0

Versuchen Sie es mit diesen Code:

var milisegundos = parseInt (data.replace ("/ Date (", ""). ersetzen (") /", ""));

var newDate = neues Datum (milisegundos). toLocaleDateString ("en-UE");

Viel Spaß!

Verwandte Themen