[gelöst] Javascript/twitter und die Zeitzonen

Ich habe mir folgendes Script zusammengestottert:

[code]function twitterCallback2(twitters) {
var statusHTML = [];
for (var i=0; i<twitters.length; i++){
var username = twitters[i].user.screen_name;
var status = twitters[i].text.replace(/((https?|s?ftp|ssh)://[^"\s<>]*[^.,;’">:\s<>)]!])/g, function(url) {
return ‘’+url+’’;
}).replace(/\B@([_a-z0-9]+)/ig, function(reply) {
return reply.charAt(0)+’’+reply.substring(1)+’’;
});
statusHTML.push(’

’+relative_time(twitters[i].created_at)+’
’+status+’

’);
}
document.getElementById(‘twitter_update_list’).innerHTML = statusHTML.join(’’);
}

function relative_time(time_value)
{
var values = time_value.split(" ");
time_value = values[1] + " " + values[2] + ", " + values[5] + " " + values[3];
return time_value
}[/code]
(Abgewandelt vom Twitter Script)
vickanka.bplaced.net/news.php

Nun habe ich festgestellt, dass die Zeitzone falsch ist.
Da muss noch einmal eine Stunde draufgerechnet werden.

(Eigentlich stört mich noch mehr wie z.B. das “Mar” usw. , aber bis ich das kapiert habe…^^)

values[1]=Monat
values[2]=Tag
values[3]=Jahr
values[4]=Stunden:Minuten:sekunden (eigentlich würde Stunde:Minuten auch reichen…)

Nun müsste Values[4] um eine Stunde hochgerechnet werden.
Mit Mathematik geht das aber nicht, weil es ein String ist oder?

[quote=“jokergermany.de.vu”]
Nun müsste Values[4] um eine Stunde hochgerechnet werden.
Mit Mathematik geht das aber nicht, weil es ein String ist oder?[/quote]

Ja, aber nur für D. Um 23h sollte dann auch der Tag korrigiert werden und am Monatsende… usw. Um es richtig zu machen solltest du:

  1. Die locale Zeitzone (incl. Sommerzeit) ermitteln
  2. Dein String in ein Date-Object umwandeln und dann rechnen.

Hier einige links zum Thema:
Zeiten zu einem Datum addieren: http://forum.jswelt.de/tutorials-javascript/53743-zeiten-datum-addieren-javascript-function-dateadd.html

GMT/UTC Weltzeit in Localzeit konvertieren : http://forum.jswelt.de/script-check/50918-js-gmt-utc-weltzeit-localzeit-konverieren.html

Twitter liefert ja schon einen schön formatierten String, den man direkt ins Date-Objekt übergeben kann:

var twitter_time = "Mon May 02 17:17:19 +0000 2011"; var date = new Date(twitter_time); document.write(date.toLocaleString()); // eigene Ausgabe über Kombination von getYear usw.

[quote=“progandy”]Twitter liefert ja schon einen schön formatierten String, den man direkt ins Date-Objekt übergeben kann:

var twitter_time = "Mon May 02 17:17:19 +0000 2011"; var date = new Date(twitter_time); document.write(date.toLocaleString()); // eigene Ausgabe über Kombination von getYear usw.[/quote]

Boar, vielen Dank ihr und selfhtml.org seit genial.
Und ich dachte das ich mich dafür Stundenlang mit Java rumschlagen darf.

Das hab ich mir jetzt vorläufig zusammengefrickelt:

function relative_time(time_value) { var date = new Date(time_value); var TagInWoche = date.getDay(); var Tag = date.getDate(); var Jahresmonat = date.getMonth(); var Jahr = date.getFullYear(); var Stunde = date.getHours(); var Min = date.getMinutes(); var Minute = ((Min < 10) ? "0" + Min : Min); var Monat = new Array("Januar", "Februar", "M&auml;rz", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Dezember"); var Wochentag = new Array("Sonntag", "Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag"); return Tag + ". " + Monat[Jahresmonat] + " " + Jahr + " um " + Stunde + ":" + Minute + " Uhr " + "(" + Wochentag[TagInWoche] + ")"; }

Wessen Zeitrechnung wird hier berücksichtigt?
Vom User oder vom Server?
Da Javascript Clientseitig ist, vermute ich mal vom User?

Korrekt. Das verwendete Offset bekommst du per getTimezoneOffset().