0

Jetzt und now() stimmen nicht überein

Ich habe ein Feld Datum+Zeit, dass ich Zeitpunkt nenne. Wenn ich dort einen Wert eintrage möchte, kann ich auch auf den Button Jetzt drücken. Nun möchte ich, dass der Benutzer keinen Zeitpunkt in der Zukunft auswählen kann. Ich setze deswegen einen Trigger nach Änderung mit dem Code:

let a := Zeitpunkt;
let b := now();
if a > b then Zeitpunkt := null end 

Der Zeitpunkt erscheint kurz und wird dann sofort gelöscht, obwohl programmtechnisch der Zeitpunkt [a] vor dem now() [b] erstellt wird.
Ich habe dann zwei Textfelder A und B angelegt, um die jeweilige UNIX-Time der beiden Zeitstempel auszulesen:

let a := Zeitpunkt;
let b := now();
A := format(a,"x");
B := format(b,"x");
if a > b then Zeitpunkt := null end 

Es zeigt sich nun, dass A größer ist als B und deswegen gelöscht wird. Das ist auch so, wenn ich für now() datetime(now()) verwende. Gibt es hier bei mir einen Denkfehler?

5 Antworten

null
    • Andreas_Schmitz
    • vor 1 Jahr
    • Gemeldet - anzeigen

    Wenn man now() + time(0,0,1) verwendet geht es. Für meine Anwendung reicht das, aber vielleicht gibt es ja noch eine bessere Lösung!

    • UweG
    • vor 1 Jahr
    • Gemeldet - anzeigen

    Habe es mit dem Script:
    let a := Zeitpunkt;
    let b := now();
    if a > b then Zeitpunkt := null end
    im Änderungstrigger vom Feld Zeitpunkt getestet.
    Wenn ich auf Zeitpunkt gehe und im PopUp auswähle passiert folgendes:
    Auswahl kleiner 'Jetzt' -> Wert wird gespeichert
    Auswahl = 'Jetzt' -> Wert wird gespeichert
    Auswahl > 'Jetzt' -> Wert wird nicht gespeichert.

    Ich habe es in der Public Cloud v3.8.16 sowie in einer privateCloud v3.8.10 als auch v3.8.13 über Browsereingabe getestet.

      • Andreas_Schmitz
      • vor 1 Jahr
      • Gemeldet - anzeigen

       Ich habe eine Lösung gebastelt, bei der zunächst die Sekunden und Millisekunden entfernt werden und dann die timestamps verglichen werden, jetzt funktioniert es:

      let a := DT(Zeitpunkt);
      let b := DT(now());
      if a > b  then
          Zeitpunkt := null
      else
          Zeitpunkt := a
      end

      DT ist eine globale Funktion:

      function DT(zeitpunkt : datetime) do
          let b := format(zeitpunkt, "HH:mm");
          let c := split(b, ":");
          datetime(date(zeitpunkt), time(number(item(c, 0)), number(item(c, 1)), 0, 0))
      end;
       

    • Andreas_Schmitz
    • vor 1 Jahr
    • Gemeldet - anzeigen

    Komisch, bei mir wird bei der Auswahl 'Jetzt' der Wert nicht übernommen! Ich habe  privateCloud v3.8.10. Ich habe schon überlegt, ob es damit zusammenhängen kann, dass ich momentan in den Niederlanden bin. Eventuell ticken hier die Uhren anders 😉

      • Andreas_Schmitz
      • vor 1 Jahr
      • Gemeldet - anzeigen

      siehe oben