0

Zeitzonen-Offset in der digitalen Signatur-Funktion

Hallo zusammen,

In meinem eLogbuch nutze ich eine "digitale Signatur". Diese wird mittels eines Triggers aktiviert, sobald eine Änderung über eine Ja/Nein-Funktion vorgenommen wird. Obwohl die Implementierung grundsätzlich funktioniert, gibt sie statt der lokalen Zeit (UTC +02:00 oder UTC +01:00 je nach Sommer- bzw. Winterzeit) stets UTC +00:00 aus. Unten der verwendete Code:

if 'Ausführung bestätigen' = 1 then
    do as server
        let currentTime := now();
        let summerTimeStart := date(year(currentTime), 3, 31 - weekday(date(year(currentTime), 3, 31) - 7));
        let summerTimeEnd := date(year(currentTime), 10, 31 - weekday(date(year(currentTime), 10, 31) - 7));
        let offset := "01";
        if currentTime >= summerTimeStart and currentTime <= summerTimeEnd then
            offset := "02"
        end;
        let adjustedTime := currentTime;
        let currentTimeWithTimezone := format(adjustedTime, " DD.MM.YYYY HH:mm UTC: +" + offset + ":00");
        DigSignatur1 := "Signiert von:" + " " + 'Erstellt von' + "; am:" + " " + currentTimeWithTimezone
    end
end

Beispiel der Ausgabe in Ninox: (Zeitangabe Soll: 14:22)

 

Schritte des Codes:

  1. Prüfung des Feldes 'Ausführung bestätigen':
     - Der Code wird nur ausgeführt, wenn das Feld `'Ausführung bestätigen'` den Wert `1` aufweist.

  2. Server-seitige Ausführung mit "do as server"**:
     - Wenn das Feld `'Ausführung bestätigen'` den Wert `1` hat, werden die nachfolgenden Aktionen serverseitig                 ausgeführt.

  3. Ermittlung der aktuellen Zeit:
     - Das Feld `currentTime` wird verwendet, um die aktuelle Zeit zu speichern.
     - Der Wert wird mit der Ninox-Funktion `now()` bestimmt.

  4. Berechnung des Sommerzeitfensters:
     - Das Startdatum der Sommerzeit (`summerTimeStart`) wird basierend auf dem letzten Sonntag im März des               laufenden Jahres berechnet.
     - Das Enddatum der Sommerzeit (`summerTimeEnd`) wird basierend auf dem letzten Sonntag im Oktober des             aktuellen Jahres bestimmt.

  5. Bestimmung des Zeitzonen-Offsets für UTC:
     - Standardmäßig wird ein Offset von UTC+01:00 angenommen und im Feld `offset` gespeichert.
     - Wenn die aktuelle Zeit im Sommerzeitfenster liegt (zwischen `summerTimeStart` und `summerTimeEnd`), wird           der Offset auf UTC+02:00 geändert.

  6. Formatierung und Speicherung der Zeitangabe:
     - Die aktuelle Zeit zusammen mit dem Zeitzonen-Offset wird im Feld `currentTimeWithTimezone` formatiert                 gespeichert.

  7. Erzeugung und Speicherung der digitalen Signatur;
     - Eine Signatur, bestehend aus dem Text "Signiert von:", dem Wert des Feldes `'Erstellt von'`, sowie dem Datum             und der Uhrzeit aus `currentTimeWithTimezone`, wird erzeugt.
     - Die erstellte Signatur wird dem Feld `DigSignatur1` zugewiesen.

Nun mein Problem: Ich schaffe es nicht, den Code so anzupassen, dass die Zeit stimmen. Hat jemand eine Idee wie ich das lösen kann.

Danke im Voraus für eure Ideen.

3 Antworten

null
    • mirko3
    • vor 1 Jahr
    • Gemeldet - anzeigen

    Hi Stephan. Dein Script funktioniert bei mir mit korrekter Uhrzeit. Kann Deinen Fehler nicht nachstellen. Ich würde nur das Script kürzen. Datenbank auf zeitzonenunabhängiges Datum umgestellt? Dein Problem ist dann wohl etwas für den Support und einen ähnlichen Fehler gab es ja schon in einem früheren Thread von Dir. Dein Script ansonsten stimmt. Mirko

    format(now(), "DD.MM.YYYY HH:mm UTC: Z")
    
      • Stephan_S
      • vor 1 Jahr
      • Gemeldet - anzeigen

       danke für deine Antwort.

      Um Disparitäten zwischen der Serverzeit (über den Browser) und der Gerätezeit (iPad) zu adressieren, habe ich als Übergangslösung 'do as server' implementiert. Dieser Ansatz war erfolgreich, da WLAN konstant zugänglich ist. Allerdings habe ich beobachtet, dass auf dem iPad (sowohl im Browser als auch in der App) nach der Eingabe der digitalen Signatur der Text aus einem entsprechenden Textfeld gelöscht wird. Ninox hatte zugesichert, dieses Problem zu adressieren, und es scheint, dass im letzten Release ein entsprechendes Update erfolgt ist. Leider sind nun die Zeiteinstellungen nicht mehr korrekt. Ich muss hinzufügen, dass wir in einer Private-Cloud-Umgebung arbeiten, nicht in einer Public-Cloud, und ich serverseitig keine Einstellungen vornehmen kann, die die Zeit beeinflussen würden. Ich danke dir ausserdem für deinen Hinweis. Ja, das zeitzonenunabhängige Datum ist aktiviert.

      Ich sehe ein, dass ich mich hier wohl nochmals intensiver auseinandersetzen muss. Es wäre wirklich hilfreich, wenn Ninox eine standardisierte Lösung bezüglich der Signatur anbieten könnte. Das würde unnötige Basteleien erheblich reduzieren!

    • Stephan_S
    • vor 1 Jahr
    • Gemeldet - anzeigen

    Sorry muss mich korrigieren! Das Problem besteht weiterhin, Ninox hat das noch nicht korrigiert! Bemerkenswert ist, dass der Text beim Einsatz einer Maus auf dem iPad erhalten bleibt, bei Nutzung des Touchscreens jedoch verschwindet! Da ich eine Maus verwendet habe, habe ich irrtümlicherweise angenommen es wäre korrigiert.