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
-
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")
-
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.
Content aside
- vor 1 JahrZuletzt aktiv
- 3Antworten
- 44Ansichten
-
2
Folge bereits