Zeitangabe nach ISO 8601

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Zeitangabe nach ISO 8601

    Hallo ihr Coder da draußen,

    für ein Projekt benötige ich eine Zeitangabe nach ISO 8601 de.wikipedia.org/wiki/ISO_8601

    Hat jemand von euch Erfahrungen wie man das richtig anwendet. Insbesondere stelle ich mir die Frage, ob man eine korrekte Angabe machen kann, ohne ein Datum anzugeben. Es geht mir hier also insbesondere um eine Uhrzeitangabe.

    In einem Projekt ist es von Nöten strukturierte Daten nach schema.org Vorgaben anzugeben schema.org/Event . Dazu sollen event-Daten "startDate" übergeben werden, allerdings ohne festes Datum, da es sich um wöchtenlich wiederholende Daten handelt.


    Summa sumarum:
    Ich benötige die korrekte ISO Zeitangabe entweder nur von einer Uhrzeit oder, wenn es so etwas gibt, von einer sich wöchentlich wiederholender Uhrzeit.


    Das ganze muss dann hiermit getestet werden und von Google gefressen werden: google.de/webmasters/tools/richsnippets

    Hoffe das war einigermaßen verständlich :)

  • Ich hab mir jetzt die schema-Seite durchgelesen und ich finde beim besten Willen keinen Punkt, bei dem nur die Uhrzeit gefordert ist. Es wird immer nur von einem Date im ISO 8601-Format gesprochen?!
    Nur eine Uhrzeit anzugeben ohne Datum macht auch relativ wenig Sinn, denn beispielsweise der Zeitpunkt 2014-01-04T16:32+01:00 ohne das Datum, sprich 16:32+01:00, ist einfach nicht zuordenbar.
    Ansonsten, falls du das Datum irgendwie getrennt berechnest, kannst du das Datum ja einfach passend abschneiden oder anderweitig erzeugen, sodass es den ISO 8601-Regeln entspricht.
  • Hi,..

    schon mal vielen Dank für die Antworten. Ich hab gestern auch noch ein wenig recherchiert und bin auf ein ähnliches Ergebnis gekommen wie du @freeek

    Da es bei der Geschichte ja um ein Interval geht, habe ich gestern auch noch ein wenig nach ISO 8601 Intervall gegoogelt.

    Was man wohl machen könnte wenn man ein wöchtentliches Interval für Montag, 19 Uhr hinterlegen möchte:

    1. Den vom aktuellen Tag folgenden Montag berechnen
    2. Für diesen Montag ein "unendliches" Interval auf genau 7 Tage festlegen.

    Theoretisch müsste das gehen, nach dem was ich gelesen habe, aber ganz ehrlich. Wie soll ich das testen ob ich das Zeitformat richtig angegeben habe. Googles Rich Snippet Testing Tool sagt mir zwar ob ein ZeitString richtig angegeben wurde, aber wenn nicht, bekomm ich keine Hinweis was falsch war.

    Schwieriges Thema, falls sich da noch jemand findet der hier schon mal was mehr gemacht hat, wäre ich sehr Dankbar.
  • Ich kann dir da jetzt nur aus PHP-Sicht helfen, aber php bietet mit der date-Funktion schon das ISO 8601 an. Das heißt du könntest die Termine berechnen, indem du denTimestamp errechnest. Codebeispiel (ungetestet)

    Quellcode

    1. $year = date('Y', time());
    2. $calendarWeek = date('W', time());
    3. $time = strtotime("{$year}-W{$calendarWeek}"); // Montag der aktuellen Woche als Timestamp. Dazu kann noch die passende Uhrzeit addiert werden, etc
    4. for ($i = 0; $i < 10; $i++) {
    5. date('c', $time + 60 * 60 * 24 * 7 * $i); // date('c') gibt dir einen Timestamp im ISO 8601 aus, der zweite Parameter ergibt den Timestamp. Der ist momentan 0, also der aktuelle Montag. Bei jedem weiteren Schleifendurchlauf wird eine Woche * $i dazuaddiert
    6. }


    Falls dir eine solche Funktion nicht zur Verfügung steht, orientier dich am Bau eines Kalenders (auszugsweise):
    - aktuellen Montag finden
    - liegt der nächste Montag im nächsten Monat => Monat erhöhen
    - Monat im nächsten Jahr? => Monat auf 1 setzen und Jahr erhöhen
    - Zeitstempel nach ISO bauen

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von freeek ()