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