[NEWSboard IBMi Forum]

Hybrid View

  1. #1
    Registriert seit
    Oct 2019
    Beiträge
    16
    Stimmt schon, wenn man beim Erstellen der Timestamp das UTC Offset mitspeichert ist das relativ einfach zu handhaben. Wenn man aber nur die Timestamp hat und im Nachhinein das UTC Offset wissen will, braucht man z.B. mktime. Leider ist das mit dem vernünftigen Design nicht unbedingt immer gegeben...

  2. #2
    Registriert seit
    Feb 2001
    Beiträge
    20.767
    "Wenn man aber nur die Timestamp hat und im Nachhinein das UTC Offset wissen will, braucht man z.B. mktime"???
    Erfindest du das Offset dann?

    C-Funktionen wie mktime, localtime usw. setzen eine Umgebungsvariable TZ (Timezone) voraus, sonst funktionieren sie nicht. Der Systemwert QUTCOFFSET wird allerdings nicht verwendet.
    Außerdem:

    The C library function time_t mktime(struct tm *timeptr) converts the structure pointed to by timeptr into a time_t value according to the local time zone.
    M.a.W.:
    - jeder beliebige Zeitstempel muss bereits als UTC vorliegen.
    - Die Umrechnung erfolgt mit der aktuellen TZ, also nicht der vergangenen TZ

    Per Locale-Einstellung (Userprofíl) kann die Variabel TZ jobspezifisch gesetzt werden.
    Hast du das mal geprüft?

    Wie gesagt, ich musst das mal realisieren, da unterschiedliche Zeitzonen (alleine schon wegen GB) benötigt wurden.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  3. #3
    Registriert seit
    Oct 2019
    Beiträge
    16
    "Erfindest du das Offset dann?"
    Nö, mktime versucht es zu ermitteln. Wie schon gesagt, das funktioniert gut außer bei der Stunde Überlappung beim Übergang von Sommer- zu Winterzeit, die defaulted immer zum Offset der Winterzeit.

    A negative value for tm_isdst causes mktime() to attempt to determine whether DST is in effect for the specified time.

    Code:
      // 1 Stunde UTC-Offset für Winterzeit
      dsply timestampToISO8601(z'2021-01-01-14.00.00');
    
      // 2 Stunde UTC-Offset für Sommerzeit
      dsply timestampToISO8601(z'2021-08-01-14.00.00');
    Das sollte auf einem System in der CET folgendes ausgeben:
    Code:
    DSPLY 2021-01-01T13:00:00Z
    DSPLY 2021-08-01T12:00:00Z
    Es wird also jeweils das richtige UTC Offset ermittelt.

  4. #4
    Registriert seit
    Feb 2001
    Beiträge
    20.767
    Dann verstehe ich die Beschreibung allerdings nicht:
    https://www.ibm.com/docs/en/i/7.4?to...ert-local-time
    Laut Beschreibung wird die aktuelle Zeitzone zur Errechnung der UTC verwendet.

    "For this conversion, mktime() checks the current locale setting for local time zone and daylight saving time (DST). If these values are not set in the current locale, mktime() gets the local time zone and daylight saving time settings from the current job."

    D.h. Wenn ich einen Timestamp, also Localtime, aus der Zeitzone USA nehme wird er mit der aktuellen Zeitzone meines Jobs/Systems in UTC umgerechnet.
    Ebenso entscheidet die aktuelle Einstellung von DST ob nun Sommer/Winterzeit berücksichtigt wird.
    Dies ist i.Ü. auch meine Erfahrung.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

Similar Threads

  1. Format von PF ändern
    By _MG_ in forum NEWSboard Programmierung
    Antworten: 8
    Letzter Beitrag: 21-04-17, 14:09
  2. RDI - /End-Exec im festen Format
    By homue in forum NEWSboard Programmierung
    Antworten: 8
    Letzter Beitrag: 25-07-16, 15:27
  3. Feldgruppen im free-Format
    By kretzsch in forum NEWSboard Programmierung
    Antworten: 3
    Letzter Beitrag: 14-08-14, 13:02
  4. XML-Ausgabe in Cobol im Format UTF-8
    By Günter in forum NEWSboard Programmierung
    Antworten: 10
    Letzter Beitrag: 26-06-14, 15:10
  5. JDBC Datum Format EUR
    By camouflage in forum NEWSboard Java
    Antworten: 1
    Letzter Beitrag: 02-12-13, 16:58

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • You may not post attachments
  • You may not edit your posts
  •