Sommerzeit wann und wo?

gamerphil
Hey,

ich bin hier grad etwas verzweifelt D

Es geht um die Unterscheidung Sommerzeit und "Normalezeit".

Habe da mal paar Fragen:
1. Wechseln alle Statten ihre Zeit zum selben Zeitpunkt, sprich März und dann iwann im Herbst?
2. Ist es richtig, dass man das so verallgemeinern kann, dass wenn wir Sommerzeit haben die Staaten der Südhalbkugel normale Zeit haben und wenn wir Normalzeit haben, haben diese Staaten Sommerzeit?

Danke schon mal ;)
loki
Schau mal hier bei Wiki rein, Gamer. Die erklären das ziemlich genau:

Sommerzeit

007
one
Wir werden deine Hausaufgaben nicht machen. D

Nicht jeder Staat spielt bei dem Blödsinn mit. Die die mitmachen stellen ihre Uhren allerdings durch die Bank um punkt 2:00 Uhr Sonntags um.

Die Sommerzeit wurde derzeit eingeführt um Licht (heute sagt man Strom) zu sparen, was allerdings erwiesener Massen ein Schuss in den Ofen war. Was bei Wiki steht, weiss ich nicht, denn ich halte nichts von Wikipedia.
gamerphil
Das ist keine Hausaufgabe. Ich habe Ferien und werde die nächsten 2 Wochen erst mal keine Hausaufgaben mehr erledigen D

Es geht genauer gesagt um eine Erweiterung eines Scripts, die dazu dient die zeit eines Besuchers anzuzeigen und nicht diese hier (UTC +2)
one
Die Uhrzeit wird vom Server geregelt. Alles was du machen kannst, ist, sie umzustellen. (Dann geht sie aber immer falsch, da der Server auch die Sommerzeit regelt.)
gamerphil
Nö one. Es geht um nen manuell eingegebenen unix-timestamp, der aus der Datenbank geholt wird.

Das umrechnen in verschiedene Zeitzonen regel ich dann per Array usw.
Funktioniert auch schon nur gehts noch um die Richtigkeit der Umrechnung D
one
Zitat:
Alternativ kann man die Datumsfunktionen von PHP auch mit der Funktion date() in dieser Form ausgeben:
date(string format[,int time]).

[,int time] gibt dabei die Zeit an, die formatiert werden soll. Wenn diese Option nicht gesetzt wurde, wird die aktuelle Serverzeit eingesetzt. Verwendet werden kann eine Reihe von Variablen, die hier zusammengestellt sind:
a "am" oder "pm"
A "AM" oder "PM"
B Swatch-Internet-Zeit
d Tag des Monats, 2-stellig mit führender Null: "01" bis "31"
D Tag der Woche als 3 Buchstaben, z.B. "Fri"
F Monat als ganzes Wort, z.B "January"
g Stunde im 12-Stunden-Format ohne führende Null: "1" bis "12"
G Stunde im 24-Stunden-Format ohne führende Null: "0" bis "23"
h Stunde im 12-Stunden-Format: "01" bis "12"
H Stunde im 24-Stunden-Format: "00" bis "23" i - Minuten: "00" bis "59"
I (grosses 'i') - "1" bei Sommerzeit, sonst "0"
j Tag des Monats ohne führende Null: "1" bis "31"
l (kleines 'L') ausgeschriebener Tag der Woche, z.B. "Friday"
L boolscher Wert für Schaltjahre: "0" oder "1"
m Monat: "01" to "12" n - Monat ohne führende Null: "1" bis "12"
M Monat als 3 Buchstaben, z.B. "Jan" s - Sekunden: "00" bis "59"
S Anhang der englischen Aufzählung, 2 Buchstaben,
z.B. "th" [bei 4 für fourth], "nd" [bei 2 für second]
t Anzahl der Tage des angegebenen Monats: "28" bis "31"
T Zeitzoneneinstellung des Rechners, z.B. "MDT"
U Sekunden seit Beginn der UNIX-Epoche (1.1.1970)
w Wochentag beginnend mit "0" (Sonntag) bis "6" (Samstag)
Y Jahr als vierstellige Zahl, z.B. "1999"
y Jahr als zweistellige Zahl, z.B. "99"
z Tag des Jahres: "0" bis "365"
Z Offset der Zeitzone gegen GTM ("-43200" bis "43200")
in Minuten. Hier nicht angegebene Zeichen wie zB:
", " oder ":" können im String mit angegeben werden.


http://www.drweb.de/magazin/php-zeit-und-datumsfunktionen/
gamerphil
Das wusste ich zwar auch noch nicht, bringt mir aber auch nichts ;)

Es werden für verschiedene Events Zeiten eingetragen und in einer Datenbank gespeichert. Beispielsweise: 15:00 23.07.2010. Dies würde in der Datenbank dann so aussehen: 1279890000. Diese Zahlenfolge gilt es jetzt zu bearbeiten. Das heisst in die anderen Zeitzonen umzuwandeln D
Während der Sommerzeit entspricht er UTC+2, während der Normalzeit UTC+1. Das heisst er muss auch unterschiedlich berechnet werden. Genauso muss man beachten, dass die anderen Zeitzonen auch Sommerzeiten haben können und somit auch unterschiedlich viele Stunden zwischen uns und dieser Zeitzone liegen können.

Um es mal zu verdeutlichen, hier mal ganz grob das Prinzip:

php:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
if($sommerzeit true){
        $zeitzonen = array(
        "IDLW" => -12,
        "HAST" => - 10,
       ...
        );
      }else{
        $zeitzonen = array(
        "IDLW" => -12,
        "HAST" => - 10,
    ...
        );      
      }
    
    $zeitzone $_GET["time"];
    
    if (isset($_GET["time"]) && array_key_exists($zeitzone$zeitzonen)){
    
    //$key = array_search(".$zeitzone.", $zeitzonen);
    $key $zeitzonen["$zeitzone"];
    $unixbeginn intval($daten["beginn"]) + 3600 $key// -> key ist die -12 usw
    $beginn strftime("%H.%M",$unixbeginn);
    $unixende $daten["ende"] + 3600 $key;
    $ende strftime("%H.%M",$unixende);
    }


Jetzt geht es nur noch um die genauen Zahlen in den Arrays.
one
I=1?

Wenn du pro Land anders anzeigen willst musst du natürlich über die IP das Land abfragen und dann definieren welche Zeit die entsprechende IP jeweils hat.
gamerphil
Zitat:
Original von one am 06. April 2009, 12:15 Uhr
I=1?


Was soll mir das sagen?
Hast du irgendwo in dem Auszug date() gesehen?
Das bringt es also nicht wirklich, oder ich hab es falsch verstanden D

Wenn du ein Formular hast und da irgendwas einträgst, kannst du ja auch nicht danach eine Serverzeit nehmen, das wäre ja dann für die Füsse.
one
Klar kannst du in einem Formular die Zeit festlegen. Anschliessend berechnest du den Eintrag des Users mit der Serverzeit.
gamerphil
Zitat:
Original von one am 06. April 2009, 12:25 Uhr
Anschliessend berechnest du den Eintrag des Users mit der Serverzeit.


Versteh ich nicht.

Wollte ich grade oben rein editiren:
den Parameter 1 für Sommerzeit gibt es bei strftime nicht.
one
Verstehst du nicht? Du redest von einem Formular. Im Normalfall werden die Einträge in einem Formular in einer Datenbanktabelle gespeichert. Dort fragst du dann den Wert ab und berechnest ihn mit der Serverzeit, damit der User auch "seine" Uhrzeit angezeigt bekommt.
gamerphil
Es geht ja wie gesagt nicht um eine aktuelle Zeit, die per date() abgefragt werden kann.

Man könnte die Zeit auch als text verstehen, der übersetzt werden soll.
Anstatt um Sprachen geht es hier aber um Mathematik.
Sprich die Anzahl der Stunden, die abgezogen oder hinzugefügt werden sollen.

Also:
Harald Müller aus Berlin (Zeitzone UTC+1/bzw UTC+2) gibt ein, dass um 15:00 seine Tochter Klavier spielt. Maria Spencer aus Los Angeles mit -9 Stunden Zeitverschiebung möchte dies auch sehen. (wird auf Youtube Live übertragen.. Beispiel halt). Das heisst bei ihr kommt es schon um 15Uhr - 9 Stunden. Also um 6 Uhr.
Wenn wir jetzt aber Sommerzeit haben und die in Losangeles nicht, dann ändert sich auch die 9 Stunden -> 10. (Das war ja die Ursprüngliche Frage, wann hat welches Land Sommerzeit).
Also um 5 Uhr. Und genau um diese Berechnung geht es.
Die aktuelle Zeit is dabei unwichtig.
one
Leg eine Tabelle an, in der du jedem Land dieser Welt eine Zeitzone zuweist. Sowas sollte es fertig im Netz geben. zwinkgrins
gamerphil
Und dann?
Das gleiche mach ich ja mit dem Array.

Gut wenn es sowas fertig im Netz gibt isses schön.
Dann muss ich mir das nicht mühselig zusammensuchen.

Wobei es ja auch ganz gut selbst gehen sollte:
Zitat:
Liste aller Staaten mit Sommerzeit

Die folgenden Listen basieren auf Daten von 2004.

* Alle Mitgliedstaaten der Europäischen Union und des Europäischen Wirtschaftsraums (ausser Island)

* Staaten, in denen eine Sommerzeit im selben Zeitraum wie in der Europäischen Union gilt:

Albanien, Andorra, Armenien, Aserbaidschan, Weissrussland, Bosnien und Herzegowina, Kirgisistan, Kosovo, Kroatien, Libanon, Liechtenstein, Marokko, Mazedonien, Moldawien, Monaco, Montenegro, Russland, San Marino, Schweiz, Serbien, Tunesien, Türkei, Ukraine, Vatikanstadt

* Staaten, in denen eine Sommerzeit in einem anderen Zeitraum gilt:

Afghanistan, Ägypten, Argentinien (seit 2007), Australien (teilweise), Bahamas, Bermuda, Brasilien (sehr uneinheitlich), Chile, Iran, Israel, Kanada (teilweise), Kuba, Marokko (nur 2008), Mexiko, Mongolei (teilweise), Namibia, Neuseeland, Pakistan, Palästinensische Autonomiegebiete, Paraguay, Syrien, Uruguay, USA (teilweise)