Domino 9 und frühere Versionen > ND6: Entwicklung

Date/Time Vergleich + Range

(1/2) > >>

Andreas Bauer:
Hallo zusammen,

ich hoffe Ihr könnt mir helfen:

Ich habe eine Maske u.a. mit dem Feld "DayTime", editierbar (Datumfeld, Anzeige nur Uhrzeit)

Nun möchte ich mit einer Function, der ich das Backend-Dokument übergebe, eine Art Gültigkeitsprüfung machen (Rückgabewert Integer True/False, True wenn alles passt).

Die Function soll True zurückgeben, wenn z.B. folgendes zutrifft:

Fraction(Now) ist in der Range DayTime - 10 Minuten bis DayTime + 30 Minuten enthalten.

Beispiel:
Fraction(Now) = 17:00:00
Fraction(DayTime) = 17:05:00
Die Function soll hier TRUE zurückgeben, weil 17:00:00 in der Range (16:55:00 - 17:35:00) enthalten ist.


Wie kann ich das am einfachsten umsetzen? Brauch ich da unbedingt schon die NotesDateTime Klassen, oder reichen mit Variants?

Ich bin im Bereich DateTime-Handling ziemlicher Anfänger, und hoffe auf Tipps.

Danke,
Andreas

koehlerbv:
Hallo, Andreas,

willkommen im Forum !

Zu Deiner Frage: Nein, Du brauchst hier keine Notes DateTimeClass-Verrenkungen zu begehen, das geht über Variable vom Typ Variant viel einfacher:
Der "fractioned part" eines Notes DateTime fields liefert Dir - in ein Variant eingelesen - immer den Stunden-Minuten-Sekunden-Wert Deines Feldes zurück. Das einzige, was Du nun noch berücksichtigen musst zwecks Berechnungen, ist die Proportion "Ein Tag = 1, 12 Stunden = 0,5 Tage" etc.

Du musst also lediglich nach dem Auslesen Deines Feldes und der Bildung Deines Vergleichswertes (in Variablen des Typs "Variant") die erhaltenen Werte in entsprechende Relation setzen (eine halbe Stunde ist beispielsweise 0,02083Periode).

HTH,
Bernhard

Andreas Bauer:
Hallo Bernhard,

vielen Dank für die schnelle Hilfe !

Wie würdest Du das hier umsetzen mit anpassen von Zeitwerten?

Angenommen ich habe folgendes:

--- Code: ---Dim vJetzt as Variant
vJetzt = Fraction(Now)
--- Ende Code ---

Jetzt will ich vJetzt um z.B. 10 Minuten "hochsetzen".

Überlegt habe ich mir folgendes:


--- Code: ---Const EINE_MINUTE! = 6.94444446708076E-04
Dim vJetzt as Variant
vJetzt = Fraction(Now)
vJetzt = vJetzt + (EINE_MINUTE * 10)
--- Ende Code ---

Oder gibt es da vielleicht System-Konstanten die ich hier verwenden könnte?

Ansonsten würde ich das so machen.

Grüße,
Andreas

koehlerbv:
Derartige Systemkonstanten gibt es nicht (wozu auch  ;D). Dein Weg scheint mir (ohne das jetzt im Detail überprüft zu haben) als genau das Procedere zu sein, das am effizientesten wäre.

Good luck (und poste dann mal Dein Ergebnis fürdie Community),

Bernhard

Andreas Bauer:
OK, prima, danke für Deine Einschätzung.

Bis später :)
Andreas

Navigation

[0] Themen-Index

[#] Nächste Seite

Zur normalen Ansicht wechseln