Hallo Forum,
nun ich bastel einwenig mit den Date Sachen in JS, ich habe mir ne kleine Prototyp Funktion geschrieben, diese liefert mir nach meinen Wünschen einen Zeit-string nach meinem Wunschfomat in UTC oder local.
So das klappt wunderbar, möchte ich nen Datum als String ausgeben setzte ich UTC auf false und der User bekommt die local Zeit, für die Datenbank brauch ich keine Parameter da reicht ja dann new Date().dateTime(); und ich habe den Sting in UTC für die Datenbank umgehend zur Hand.
Soweit, so gut. Wie berechnet JS jedoch die Lokale-Zeit? Sicher auf Grund der Servereinstellung oder doch vom Browser (Client seitig)?
Bei den "Date Object Methods" ist nämlich nichts zu finden das es ermöglichen würde eine Zeitzone zusetzten, denn da ich in der Datenbank alles nach UTC abspeichere muss ich bei Ausgabe eines Datums aus der Datenbank den String in die User-Zeitzone umrechnen und in JS habe ich kein Schimmer wo ich anfangen soll (in php habe ich derartige Funkionen bereits umgesetzt).
Zudem möchte ich diese dann auch auf meinem NODE-js-Server nutzten wo es sicher wieder anders aussieht.
Ich hoffe ihr könnt mir weiter helfen.
MFG: Paykoman
nun ich bastel einwenig mit den Date Sachen in JS, ich habe mir ne kleine Prototyp Funktion geschrieben, diese liefert mir nach meinen Wünschen einen Zeit-string nach meinem Wunschfomat in UTC oder local.
Code:
Date.prototype.dateTime = function( output, utc )
{
var string = ( typeof output != 'undefined' && output != '' ) ? output : "yyyy-mm-dd hh:mi:se";
var UTC = ( typeof utc != 'undefined' ) ? utc : true;
if( UTC === false )
{
var yyyy = this.getFullYear().toString();
var mm = (this.getMonth()+1).toString(); // getMonth() is zero-based
var dd = this.getDate().toString();
var hh = this.getHours().toString();
var mi = this.getMinutes().toString();
var se = this.getSeconds().toString();
}
else
{
var yyyy = this.getUTCFullYear().toString();
var mm = (this.getUTCMonth()+1).toString(); // getMonth() is zero-based
var dd = this.getUTCDate().toString();
var hh = this.getUTCHours().toString();
var mi = this.getUTCMinutes().toString();
var se = this.getUTCSeconds().toString();
}
return string.replace('yyyy', yyyy)
.replace('mm', (mm[1]?mm:"0"+mm[0]))
.replace('dd', (dd[1]?dd:"0"+dd[0]))
.replace('hh', (hh[1]?hh:"0"+hh[0]))
.replace('mi', (mi[1]?mi:"0"+mi[0]))
.replace('se', (se[1]?se:"0"+se[0]));
};
var datum = new Date().dateTime();
console.log( datum ); // 2015-10-01 12:37:25
var datum = new Date().dateTime('', false);
console.log( datum ); // 2015-10-01 14:37:25
So das klappt wunderbar, möchte ich nen Datum als String ausgeben setzte ich UTC auf false und der User bekommt die local Zeit, für die Datenbank brauch ich keine Parameter da reicht ja dann new Date().dateTime(); und ich habe den Sting in UTC für die Datenbank umgehend zur Hand.
Soweit, so gut. Wie berechnet JS jedoch die Lokale-Zeit? Sicher auf Grund der Servereinstellung oder doch vom Browser (Client seitig)?
Bei den "Date Object Methods" ist nämlich nichts zu finden das es ermöglichen würde eine Zeitzone zusetzten, denn da ich in der Datenbank alles nach UTC abspeichere muss ich bei Ausgabe eines Datums aus der Datenbank den String in die User-Zeitzone umrechnen und in JS habe ich kein Schimmer wo ich anfangen soll (in php habe ich derartige Funkionen bereits umgesetzt).
Zudem möchte ich diese dann auch auf meinem NODE-js-Server nutzten wo es sicher wieder anders aussieht.
Ich hoffe ihr könnt mir weiter helfen.
MFG: Paykoman