troubadix: Uhrzeit plus eine Stunde (bzw.: Zahl + eins)

Hallo,

ich habe das Gefühl, dass mein Problem eigentlich eher simpel ist, aber konnte dennoch keine Lösung finden.
Folgendes: Ich bekomme ein XML-Dokument, das ich per XSLT serverseitig in html umwandle, u.a. Termine mit Uhrzeit und Datum. Das Problem: Ich bekomme die Zeit nur mit utc_Zeit oder wahlweise Londoner Zeit,

Bsp.
<event time_utc="12.00.00" time_london="13.00.00" />.

Ich müsste also immer zwei, bzw. eine Stunde addieren, um auf die korrekte deutsche Zeit zu kommen.

Ich stell es mir etwa so vor:

  
<xsl:value-of select="substring(@time_utc,1,2 <!-- plus zwei -->)"/>:<xsl:value-of select="substring(@time_utc,3,4)"/> Uhr 

Leider habe ich den entsprechenden Befehl nicht gefunden. Würde mich freuen, wenn mir da jemand weiterhilft.
Grüsse, Nils.

  1. Hallo,

    Ich stell es mir etwa so vor:
    [code lang=xml]
    <xsl:value-of select="substring(@time_utc,1,2 <!-- plus zwei -->)"/>:

    "reichen" würde schon "substring(@time_utc,1,2) + 2"
    schöner ist eher schon "number(substring(@time_utc,1,2)) + 2"
    und sehr schön ist (wobei das in XSLT 1.0 nicht wirklich was ausmacht, wegen implizite Typkonvertierung):
    "number(number(substring(@time_utc,1,2)) + 2)"

    also: <xsl:value-of select="number(substring(@time_utc,1,2)) + 2" />

    Grüße
    Thomas

    1. also: <xsl:value-of select="number(substring(@time_utc,1,2)) + 2" />

      Grüße
      Thomas

      Ich danke Dir, wusste ja, dass es einfach sein muss, aber so simpel...

      Grüsse, Nils.

  2. Hallo,

    [UTC, London]
    Ich müsste also immer zwei, bzw. eine Stunde addieren, um auf die korrekte deutsche Zeit zu kommen.

    Unabhängig vom XSL-Teil: Beachte bitte, dass London im Winter (letzter Sonntag im Oktober bis zum Samstag vor dem letzten Sonntag im März) die gleiche Zeit wie UTC hat, im Sommer (letzter Sonntag im März bis zum Samstag vor dem letzten Sonntag im Oktober) aber eine Stunde Differenz.

    Gleiches gilt für Deutschland: Im Winter ist die Differenz eine Stunde zu UTC, im Sommer aber zwei Stunden Differenz (Zeitumstellung ist seit Mitte der 90er Jahre in sehr großen Teilen Europas einheitlich).

    Du solltest also immer eine Stunde zur Londoner Zeit addieren, um die korrekte Deutsche Zeit zu erhalten, nicht jedoch mit UTC herumspielen, außer Du kennst auch noch das Datum, das gemeint sein soll *und* die Zeitpunkte der Zeitumstellungen (was dann wieder komplizierter wird).

    Beachte außerdem noch, dass wenn Du auf 23 eine 1 addierst, erhälst Du 24, sollte aber eigentlich 0 sein. Du musst also abfragen, ob die Stunde >= 23 ist, um dann 23 von der Stunde abzuziehen anstelle 1 hinzuzuzählen. Falls Du zudem auch noch irgendwo das Datum anzeigst, müsstest Du das außerdem noch um 1 erhöhen (was dann auch wieder etwas komplizierter werden kann, v.a. wegen Schaltjahresregelungen).

    Viele Grüße,
    Christian

    1. Hallo

      Danke für den Tipp mit der Zeitumstellung, daran hätte ich allerdings wirklich nicht gedacht.

      Beachte außerdem noch, dass wenn Du auf 23 eine 1 addierst, erhälst Du 24, sollte aber eigentlich 0 sein. Du musst also abfragen, ob die Stunde >= 23 ist, um dann 23 von der Stunde abzuziehen anstelle 1 hinzuzuzählen. Falls Du zudem auch noch irgendwo das Datum anzeigst, müsstest Du das außerdem noch um 1 erhöhen (was dann auch wieder etwas komplizierter werden kann, v.a. wegen Schaltjahresregelungen).

      Gott sei Dank sind alle Termine tagsüber.

      Viele Grüße,
      Christian

      Danke und Grüsse, Nils.