Seite 1 von 5

mit Datum rechnen

Verfasst: 22.05.2009 09:18
von MrVain
Hallo,

ich möchte in einer Log-Datei einer Sicherung den Start-Zeitpunkt vom End-Zeitpunkt abziehen.

Folgendes steht in der Log-Datei:

Code: Alles auswählen

[BANDSICHERUNG] 	
START = 20.05.2009 16:25:20,07 
ENDE = 20.05.2009 16:25:30,09 
Nun möchte ich die Sekunden der Bandsicherung ausgeben.

Folgendes habe ich bereits gemacht:

Code: Alles auswählen

Global  INI_Datei$
Global  START_ZEIT$
Global  END_ZEIT$

Procedure Read_INI_Datei(iac)

; Lesen der Log-Datei           

If OpenPreferences(INI_Datei$)

        PreferenceGroup("BANDSICHERUNG")     
        START_ZEIT$       = ReadPreferenceString("START", "START")    
        END_ZEIT$         = ReadPreferenceString("ENDE", "ENDE")
    
Else
     MessageRequester("Error", "Fehler beim Lesen der TXT-Datei ")
EndIf

          

EndProcedure





OpenConsole()



INI_Datei$ = GetCurrentDirectory()
INI_Datei$ = INI_Datei$ + "sicherung.log"

iac = 0
Read_INI_Datei(iac)
iac = 1

PrintN("Start-Zeit:     " + START_ZEIT$);
PrintN("End-Zeit:       " + END_ZEIT$);

START_ZEIT_FORMAT$ = Mid(START_ZEIT$,7,4) + ", " + Mid(START_ZEIT$,4,2) + ", " + Mid(START_ZEIT$,1,2) + ", " + Mid(START_ZEIT$,12,2) + ", " + Mid(START_ZEIT$,15,2) + ", " + Mid(START_ZEIT$,18,2)
Date(START_ZEIT_FORMAT$)
PrintN(START_ZEIT_FORMAT$)


Delay(10000);

Nun kommt jedoch folgender Fehler:

date() Falsche Zahl an Parametern

Verfasst: 22.05.2009 09:28
von X360 Andy

Verfasst: 22.05.2009 09:28
von sibru
Hallo MrVain,

für Datums-Funktionen gibt´s die Funktionen
ParseDate(Datums-String-->Sekunden) und
FormatDate(Sekunden-->DatumsString). Auch
die Funktion AddDate solltest Du dir in der
PB-Hilfe unter allgemeinen Libraries "Date"
mal ansehen...

viel Erfolg !
SiBru

Verfasst: 22.05.2009 10:07
von MrVain
Danke,

habe es so hinbekommen:

Code: Alles auswählen

START_ZEIT_FORMAT$ = Mid(START_ZEIT$,7,4) + Mid(START_ZEIT$,4,2) + Mid(START_ZEIT$,1,2) + Mid(START_ZEIT$,12,2) + Mid(START_ZEIT$,15,2) + Mid(START_ZEIT$,18,2)
END_ZEIT_FORMAT$ = Mid(END_ZEIT$,7,4) + Mid(END_ZEIT$,4,2) + Mid(END_ZEIT$,1,2) + Mid(END_ZEIT$,12,2) + Mid(END_ZEIT$,15,2) + Mid(END_ZEIT$,18,2)

start_zeit = ParseDate("%yyyy%mm%dd%hh%ii%ss", START_ZEIT_FORMAT$)
end_zeit   = ParseDate("%yyyy%mm%dd%hh%ii%ss", END_ZEIT_FORMAT$)

zeit_sek   = end_zeit - start_zeit
;Debug Date(START_ZEIT_FORMAT$)
;S2$ = ParseDate("%dd.%mm.%yyyy %hh:%ii:%ss", $START_ZEIT) 

PrintN("Das Ergebnis lautet: " + Str(zeit_sek) + " Sekunden")

Verfasst: 22.05.2009 11:05
von KeyKon
MrVain hat geschrieben:Danke,

habe es so hinbekommen:

Code: Alles auswählen

START_ZEIT_FORMAT$ = Mid(START_ZEIT$,7,4) + Mid(START_ZEIT$,4,2) + Mid(START_ZEIT$,1,2) + Mid(START_ZEIT$,12,2) + Mid(START_ZEIT$,15,2) + Mid(START_ZEIT$,18,2)
END_ZEIT_FORMAT$ = Mid(END_ZEIT$,7,4) + Mid(END_ZEIT$,4,2) + Mid(END_ZEIT$,1,2) + Mid(END_ZEIT$,12,2) + Mid(END_ZEIT$,15,2) + Mid(END_ZEIT$,18,2)

start_zeit = ParseDate("%yyyy%mm%dd%hh%ii%ss", START_ZEIT_FORMAT$)
end_zeit   = ParseDate("%yyyy%mm%dd%hh%ii%ss", END_ZEIT_FORMAT$)

zeit_sek   = end_zeit - start_zeit
;Debug Date(START_ZEIT_FORMAT$)
;S2$ = ParseDate("%dd.%mm.%yyyy %hh:%ii:%ss", $START_ZEIT) 

PrintN("Das Ergebnis lautet: " + Str(zeit_sek) + " Sekunden")
Wiso machst dus dir denn so umständlich? Das auskomentierte is doch der viel einfachere Weg...

Verfasst: 22.05.2009 11:44
von MrVain
KeyKon hat geschrieben:
MrVain hat geschrieben:Danke,

habe es so hinbekommen:

Code: Alles auswählen

START_ZEIT_FORMAT$ = Mid(START_ZEIT$,7,4) + Mid(START_ZEIT$,4,2) + Mid(START_ZEIT$,1,2) + Mid(START_ZEIT$,12,2) + Mid(START_ZEIT$,15,2) + Mid(START_ZEIT$,18,2)
END_ZEIT_FORMAT$ = Mid(END_ZEIT$,7,4) + Mid(END_ZEIT$,4,2) + Mid(END_ZEIT$,1,2) + Mid(END_ZEIT$,12,2) + Mid(END_ZEIT$,15,2) + Mid(END_ZEIT$,18,2)

start_zeit = ParseDate("%yyyy%mm%dd%hh%ii%ss", START_ZEIT_FORMAT$)
end_zeit   = ParseDate("%yyyy%mm%dd%hh%ii%ss", END_ZEIT_FORMAT$)

zeit_sek   = end_zeit - start_zeit
;Debug Date(START_ZEIT_FORMAT$)
;S2$ = ParseDate("%dd.%mm.%yyyy %hh:%ii:%ss", $START_ZEIT) 

PrintN("Das Ergebnis lautet: " + Str(zeit_sek) + " Sekunden")
Wiso machst dus dir denn so umständlich? Das auskomentierte is doch der viel einfachere Weg...
Das ";Debug Date(START_ZEIT_FORMAT$) "
gibt dann

"Falsche Zahl an Parametern" aus :(

Verfasst: 22.05.2009 11:56
von Andesdaf
F1 auf den Befehl und schau dir dann mal die Parameter an.

Verfasst: 22.05.2009 12:26
von Kaeru Gaman
MrVain hat geschrieben:Nun kommt jedoch folgender Fehler:

date() Falsche Zahl an Parametern
MrVain hat geschrieben:Das ";Debug Date(START_ZEIT_FORMAT$) "
gibt dann

"Falsche Zahl an Parametern" aus :(
was ist der Unterschied zwischen einer Gruppe Zahlen und einer einzigen Zeichenkette?

Verfasst: 22.05.2009 12:31
von Andesdaf
@Kaeru: Wo hast du das erste Zitat her?

Verfasst: 22.05.2009 12:33
von Kaeru Gaman
aus dem ersten posting

... ich denke mir nur, in die Help wird er schon geschaut haben, aber der Unterschied zwischen

Code: Alles auswählen

Date(1999, 12, 31, 23, 59, 59)
und

Code: Alles auswählen

Date("1999, 12, 31, 23, 59, 59")
scheint ihm nicht offensichtlich zu sein.