Datum und Zeit - miebach/miclas-vic GitHub Wiki
Datum aus der Datenbank
Ein mit SelectTop1
aus der Datenbank gelesenes Datumsfeld kann als String weiter verarbeitet werden, es ist keine Typ-Umwandlung mehr notwendig:
AchVerfallsdatum := SelectTop1("ArtikelCharge", "AchVerfallsdatum", w_ac, "");
line := " Verfallsdatum: " + AchVerfallsdatum;
Datums- und Zeit-Funktionen
(Die Datentypen date und timespan sind hier nur sinngemäß aufgeführt!)
timespan( int tag, int monat, int jahr, int stunde, int minute, int sekunde ) => timespan
date( int tag, int monat, int jahr, int stunde, int minute, int sekunde ) => date
now() => date
?date( string eingabetext, date default, int mode = {DATE_ONLY|TIME_ONLY} ) => date
?timespan( string eingabetext, date default, int mode = {DATE_ONLY|TIME_ONLY} ) => timespan
?date2date( string eingabetext, date& date1, date& date2, int mode = {DATE_ONLY|TIME_ONLY}) => boolean
string2date( string input, [string formatstr='dd.mm.YY HH:MM:SS']) => date
date2string( date input, [string formatstr='dd.mm.YY HH:MM:SS']) => string
string2timespan( string , [formatstr='dd.mm.YYYY HH:MM:SS'] ) => timespan
// Timespan in Datumssyntax dd.mm.YYYY HH:MM:SS
// Beispiel: string2timespan(0.0.0 1:0:0) => 1 Stunde
timespan2string( timespan input, [string formatstr]) ) => string
unixtime( date ) => time_t
wintime( time_t ) => date
year( date ) => integer
month( date ) => integer
day( date ) => integer
hour( date ) => integer
minute( date ) => integer
second( date ) => integer
Datentypen und Darstellung von Datum und Zeitspanne
Datentypen sind date & timespan, diese werden als 64-bit double dargestellt, basierend auf der COleDateTime-Klasse der MFCs. (Tage nach 30.12.1899 - 0 Uhr )
Da Datum und Zeitspannen vom gleichen Datentyp sind, sollte man genau darauf achten, wie diese eingesetzt werden (über Bezeichnung/ Variablennamen) und/oder über Größenvergleich eventuelle Absicherungen vornehmen (Zeitspannen sind immer kleiner als Datum, wenn Zeitangaben nicht sehr weit in der Vergangenheit liegen).
Operationen können als Fließkommazahl durchgeführt werden:
Beispiel:
(double)tomorrow := now() + timespan( 1,0,0 )
dtLetzteMahnung := dtLieferung + 5 * tsMahnzeit