mit Datum rechnen

Anfängerfragen zum Programmieren mit PureBasic.
MrVain
Beiträge: 24
Registriert: 08.03.2009 14:34

mit Datum rechnen

Beitrag 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
Benutzeravatar
X360 Andy
Beiträge: 1206
Registriert: 11.05.2008 00:22
Wohnort: Bodensee
Kontaktdaten:

Beitrag von X360 Andy »

sibru
Beiträge: 265
Registriert: 15.09.2004 18:11
Wohnort: hamburg

Beitrag 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
Bild Bild
MrVain
Beiträge: 24
Registriert: 08.03.2009 14:34

Beitrag 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")
Benutzeravatar
KeyKon
Beiträge: 1412
Registriert: 10.09.2004 20:51
Computerausstattung: Laptop: i5 2,8 Ghz, 16GB DDR3 RAM, GeForce 555GT 2GB VRAM
PC: i7 4,3 Ghz, 32GB DDR3 RAM, GeForce 680 GTX 4GB VRAM
Win10 x64 Home/Prof
PB 5.30 (64bit)
Wohnort: Ansbach
Kontaktdaten:

Beitrag 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...
(\/) (°,,,°) (\/)
MrVain
Beiträge: 24
Registriert: 08.03.2009 14:34

Beitrag 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 :(
Andesdaf
Moderator
Beiträge: 2673
Registriert: 15.06.2008 18:22
Wohnort: Dresden

Beitrag von Andesdaf »

F1 auf den Befehl und schau dir dann mal die Parameter an.
Win11 x64 | PB 6.20
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag 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?
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Andesdaf
Moderator
Beiträge: 2673
Registriert: 15.06.2008 18:22
Wohnort: Dresden

Beitrag von Andesdaf »

@Kaeru: Wo hast du das erste Zitat her?
Win11 x64 | PB 6.20
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag 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.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Antworten