Das Notes Forum
Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: qpix am 27.01.06 - 08:13:18
-
hallo leute...
ich bin eigentlich notes sysadmin und kenne mich mit der programmierung mehr schlecht als recht aus, aber für ein paar kleinigkeiten reichts.
nun habe ich folgendes problem das ich nicht imstande bin zu lösen.
ich habe 3 felder als datum/zeit definiert: feld1, feld2, feld3.
die rechnung scheint einfach: feldwert2 - feldwert1 =summe feld3.
z.b. 22:52 - 07:35 = 15:17
oder 01:30 - 0:50 = 00:40
diese wäre die richtige rechnung, nur bin ich nicht imstande dies hinzukriegen.
ich habe bereits versucht, feld2 - feld1/60 dann sollten die min rauskommen.
nur wenn ich diesen wert wieder mit 60 teile kommt die falsche zahl raus im ersten beispiel nähmlich 15:28.
ich habe auch alle möglichen formeln und varianten probiert, aber no chance?!
ich hoffe jemand von euch kann mir helfen!
danke qpix
-
Hallo qpix,
ich habe den Eindruck Du mischt hier Uhrzeiten und Stunden, Du willst also von der Uhrzeit 22:35 einfach 7 Stunden und 35 Minuten abziehen und dann wieder die Uhrzeit erhalten. Habe ich das so richtig verstanden?
Wenn ja, habe ich mit Formeln was zusammengestoppelt, das ist weder wirklich schön noch ist es ausgereift, aber ich poste es trotzdem mal (Kritik erwünscht :-\).
Datum1 = Text-Feld, bearbeitbar
Datum2 = Text-Feld, bearbeitbar
Wichtig hierbei ist, dass die Zeiten immer mit einem Doppelpunkt eingegeben werden müssen, z.B. 12:35
Datum3 = Zeit/Datum-Feld, berechnet mit folgender Formel
*** hier rechne ich die einzelnen Werte vor und nach dem Doppelpunkt in Minuten um ***
_W1 := @ToNumber(@Subset( @Explode(Datum1 ; ":") ; 1 )) * 60 ;
_W2 := @ToNumber(@Subset( @Explode(Datum1 ; ":") ; -1 )) ;
_W3 := @ToNumber(@Subset( @Explode(Datum2 ; ":") ; 1 )) * 60 ;
_W4 := @ToNumber(@Subset( @Explode(Datum2 ; ":") ; -1)) ;
*** hier subtrahiere ich die Minuten ***
_E := _W2 - _W4 ;
*** man muss eine Stunde korrigieren, wenn die Minuten der abzuziehenden Stunden größer sind als die Minuten der Uhrzeit ***
_E1 := @If(_E >= 0 ; (_W1 - _W3) / 60 ; (_W1 - _W3 - 60) / 60) ;
_E2 := @If(_E >= 0 ; (_W2 - _W4) ; (60 +_E )) ;
*** Umrechnung der Werte in Datum ***
@ToTime(@Text(_E1) + ":" + @Text(_E2))
Diese Formel ist nicht komfortabel und birgt ein paar Probleme - ist mir klar. Vielleicht kann man sie ja trotzdem verwenden.
Grüße
Bernd
-
die Subtraktion zweier Datumswerte ergibt eine Differenz in Sekunden, wie DU schon richtig erkannt hast. Diese sekunden lassen sich nicht direkt als "zeitwert" anzeigen.
Du kannst Dir aber Stunden, Minuten und Sekunden selbst berechnen:
wenn Zeit3 die Differenz in Sekunden beträgt, dann geht das so:
hour := @Integer( Zeit3 / 3600 );
restMin := @Modulo( Zeit3 ; 3600 );
min := @Integer( restMin / 60 );
sek := @Modulo( restMin ; 60 );
x := @Time( hour ; min ; sek );
@If( @IsError( x ) ; "" ; x )
-
danke für dein posting.
es sind aber nicht uhrzeiten und stunden sondern das format lautet stunden:minuten:
z.b.
22:35 sind also 22st und 52min minus 07st:35min sollte 15:17 rauskommen und nicht 15:28.......irgendwas.
danke
-
vielen dank torsten...
mit deiner formel hats endlich geklappt!!!!
gruesse qpix