FreeBasic: Datum und Uhrzeit


Die einfachste Möglichkeit die Zeit auszugeben ist Time.

print time
sleep

Ok, die Zeit wird ausgegeben, aber wie speichert man die Uhrzeit? Das geht so:

dim Zeit as string
Zeit = time
print Zeit
sleep

Die Uhrzeit wird bei Time im Format "hh:mm:ss" wiedergegeben. Wenn du aufgepasst hast siehst du, dass die Variable Zeit im Beispiel ein String ist. Wo liegt das Problem könntest du dich Fragen. Das Problem ist das man die Uhrzeit im allgemeinen als Zahlen haben möchste. Im Thema String Manipulation hat du die Funktion Mid() kennen gelernt. Mit dieser Funktion werden wir uns jetzt drei Hilfsfunktionen schreiben:

declare function GetHour() as integer
declare function GetMinute() as integer
declare function GetSecond() as integer

function GetHour() as integer
  dim Zeit as string
  Zeit = mid(time,1,2)
  return val(Zeit)
end function

function GetMinute() as integer
  dim Zeit as string
  Zeit = mid(time,4,5)
  return val(Zeit)
end function

function GetSecond() as integer
  dim Zeit as string
  Zeit = mid(time,7,8)
  return val(Zeit)
end function

So jetzt kannst du die einzelnen Bestandteile der Uhrzeit als Integer benutzten. Aber eins haben wir noch vergessen, die Sekundenbruchteile. Man braucht oft genug zum vergleich wie lang bestimmte Vorgänge dauern Sekundenbruchteile. Hier noch eine Hilfsfunktion um Sekundenbruchteile zu benutzen. Die Erklärung reicht ins nächste Thema herein.

declare function GetSplitSecond() as double

function GetSplitSecond() as double
  return timer-int(timer) 
end function

Zeitmessung

Bearbeiten

Im letzten Unterkapitel hast du gesehen, dass man auch Sekundenbruchteile messen kann. Wenn du ins letzte Beispiel schaust, wirst du sehen, dass in der Funktion GetSplitSecond() nicht Time sondern Timer benutzt wird. Der Buchstabe macht viel aus. Time gibt die aktuelle Uhrzeit zurück, während Timer die Zeit die der Computer an ist auf 16 Nachkommastellen genau angibt. Mit dieser unscheinbaren Funktion lässt sich einiges anstellen. Im Kapitel Zufall hast du von ihr gebrauch gemacht, um die Zufallsreihen zu initialisieren. Hier wirst du sie benutzten um die Zeit zu messen. Ein kleines Beispiel:

dim Zeit as double 
dim i as integer
Zeit = timer
for i = 0 to 50000
    print "Ich verschwende Zeit!"
next
Zeit = timer - Zeit 
print Zeit
sleep

Der Text "Ich verschwende Zeit!" wird 50000 mal ausgegeben. Die Differenz zwischen Endzeit und Startzeit ist die dauer der For-Schleife. Bei mir waren es 4.56 Sekunden. Ihr werdet sicher ein anderes Ergebnis bekommen. Versuchts einfach mal.

Das Datum ermittelt man mit Date. Das Format ist "mm-dd-yyyy".Ansonsten ist alles gleich wie bei Time. Für das Datum brauchen wir auch Hilfsfunktionen, die so aussehen:

declare function GetMonth() as integer
declare function GetDay() as integer
declare function GetYear() as integer

function GetMonth() as integer
  dim Zeit as string
  Zeit = mid(date,1,2)
  return val(Zeit)
end function

function GetDay() as integer
  dim Zeit as string
  Zeit = mid(date,4,5)
  return val(Zeit)
end function

function GetYear() as integer
  dim Zeit as string
  Zeit = mid(date,7,10)
  return val(Zeit)
end function

Mehr gibt es nicht wirklich zu sagen ausser, dass man mit Setdate das Datum setzen kann. Die Funktion erwartet einen String wie ihn Date liefern würde, allerdings solltest du von dieser Funktion nur gebrauch machen wenn es wirklich sein muss.