|
Die Klasse IntlDate bietet Funktionen zur Datumsmanipulation an, die sich an der Borland-TDate-Klasse orientieren. Allerdings unterstützt die Klasse IntlDate die Internationalisierung der Datumsstrings. Ferner kann ein IntlDate-Objekt aus einem TDate-Objekt konstruiert werden.
Aufzählungen
| |
typedef enum DateConstant {
idYesterday, idToday, idTomorrow
};
Die Aufzählung DateConstant enthält Werte für für die logischen Dati heute, gestern und morgen.
| Aufzählung DateConstant |
typedef enum DateElement {
idDay, idMonth, idYear
};
Die Elemente der Aufzählung DateElement listen die drei möglichen Datumstypen auf. Diese können entweder ein Tag, ein Monat oder ein Jahr sein.
| Aufzählung DateElement |
typedef enum MonthType {
January = 1, February, March, April, May,
June, July, August, September, October,
November, December
};
MonthType listet die Monate beginned bei 1 für Januar auf.
| Aufzählung MonthType |
typedef enum WeekDay {
Monday, Tuesday, Wednesday, Thursday,
Friday, Saturday, Sunday, InvalidDay
};
Die Aufzählung WeekDays stellt alle Wochentage zusammen und definiert einen ungültigen Tag.
Sprachen
| Aufzählung WeekDay |
|
Das Objekt kann die Datumsangaben in fünf verschiedene Sprachen übersetzen. Um die entsprechenden Strings zu bestimmen, wird das Objekt Language verwendet. Als Vorgabe wird die Sprache verwendet, die im Sektor [intl] der Datei WIN.INI spezifiziert ist. Dieser Datei werden auch die Datumsformate entnommen, die jedoch ebenfalls später geändert werden können.
Format Strings
Datumsstrings werden unter Verwendung sogenannter Format Strings erzeugt. Diese lehnen sich an die Windows-Konventionen an, wie sie auch in der Datei WIN.INI Verwendung finden:
|
Symbol
|
Umsetzung
|
|
d
|
Übersetzt einen Monatstag in die Zahl 1-31
|
|
dd
|
Übersetzt einen Monatstag in eine Zahl zwischen 1 und 31, wobei Werte kleiner zehn eine führende Null vorangestellt bekommen
|
|
ddd
|
Konvertiert den Wochentag in die Kurzdarstellung. Das konkrete Erscheinungsbild hängt dabei von der gewählten Sprache ab.
|
|
dddd
|
Übersetzt den Wochentag in die lange, vollständige Schreibweise.
|
|
m
|
Wandelt den Monatswert in eine Zahl zwischen 1 und 12
|
|
mm
|
Stellt für Monate kleiner zehn der Zahl eine Null voran.
|
|
Mmm
|
Konvertiert den Monat in die entspr. Kurzdarstellung des Namens.
|
|
mmmm
|
Verwendet den vollständigen Monatsnamen gemäß der gewählten Sprache.
|
|
yy
|
Wandelt den Jahresanteil in eine zweiziffrige Darstellung
|
|
yyyy
|
Gibt die Jahresangabe mit vier Ziffern wieder.
|
Zusätzlich wurden neue Symbole für erweiterte Datumsformatierungen eingeführt:
|
Symbol
|
Umsetzung
|
|
q
|
Bestimmt das Quartal als Zahl zwischen 1 und 4
|
|
s
|
Hängt an die Zahl des Monatstags einen Text, der eine Rangzahl ergibt, für die deutsche Sprache z. B. „.“. Dieses Symbol sollte direkt auf das Symbol „d“ folgen.
|
|
w
|
Liefert die zugehörige Kalenderwoche zwischen 1 und 53, wobei die erste Kalenderwoche beim ersten Montag des Jahres beginnt.
|
|
ww
|
Liefert die Kalenderwoche wie „w“, jedoch zusätzlich mit einer führenden Null für die ersten neun Wochen.
|
| Unterschiedliche internationale Formate |
|
Die Schreibweise wird für die Symbole ddd, dddd, mmm und mmmm berücksichtigt. Ist der erste Buchstabe des Symbols großgeschrieben, wird auch der erste Buchstabe des Namens groß geschrieben, sofern dies nicht ohnehin der Fall ist.
| Groß-/ Kleinschreibung |
|
Alle übrigen Buchstaben und Zeichen gelten in Format Strings als Literale, die unverändert übernommen werden. Kommen in Literalen Zeichen vor, die als Symbole klassifiziert wurden, muß diesen Zeichen ein Backslash angehängt werden.
| Literale |
|
Der Format String
Aujourd\’hui nous sommes le dddd ds mmmm yyyy
wird übersetzt nach
Aujourd’hui, nous sommes le mardi 10 janvier 1995
Öffentliche Konstruktoren
| Beispiel |
IntlDate ()
Diese elementare Form des Konstruktors erzeugt ein IntlDate-Objekt und initialisiert dieses mit Null.
IntlDate (DateConstant org)
Dieser Konstruktur erzeugt ein IntlDate-Objekt und besetzt den Wert gemäß dem relativen Datum in org, für das drei Werte erlaubt sind: idToday, idYesterday, idTomorrow.
IntlDate (const IntlDate &d)
Der Kopierkonstruktor erzeugt ein neues Objekt aus einem bereits bestehenden IntlDate-Objekt.
IntlDate (int d, int m, int y)
Diese Variante des Konstruktors setzt das Datum nach der Erzeugung auf das Datum, das sich aus Tag d, Monat m und Jahr y ergibt.
IntlDate (long n)
Erzeugt ein IntlDate-Objekt aus einem LongInteger, der von einem anderen IntlDate-Objekt erhalten wurde.
IntlDate (const char *str,
const char *fmt= 0,
idLanguage l = idUndefLanguage)
IntlDate (const string &str,
const char *fmt = 0,
idLanguage l = idUndefLanguage)
IntlDate (const char *str,
const string &fmt,
idLanguage l = idUndefLanguage)
IntlDate (const string &str,
const string &fmt,
idLanguage l = idUndefLanguage)
Es gibt vier Varianten, um aus einem Datumsstring ein Objekt mit einem Datum zu erzeugen. Dazu wird der in fmt übergebene Format String verwendet. Ist dieser nicht spezifiziert, wird statt dessen die Systemvorgabe verwendet, wobei in allen Fällen l die verwendete Sprache angibt.
IntlDate (const TDate &d)
Erzeugt ein IntlDate-Objekt aus einem Borland-TDate-Objekt.
Öffentliche Operatoren
| IntlDate |
IntlDate &operator += (long n)
Addiert n Tage auf das aktuelle Datum.
| Operator += |
IntlDate &operator -= (long n)
Subtrahiert n Tage vom aktuellen Datum.
| Operator -= |
IntlDate &operator ++ ()
IntlDate &operator ++ (int)
Vor- und Nach-Inkrementation des aktuellen Datums.
| Operator ++ |
IntlDate &operator -- ()
IntlDate &operator -- (int)
Vor- und Nach-Dekrementation des aktuellen Datums.
| Operator -- |
bool operator == (const IntlDate &b) const
bool operator != (const IntlDate &b) const
bool operator <= (const IntlDate &b) const
bool operator >= (const IntlDate &b) const
bool operator < (const IntlDate &b) const
bool operator > (const IntlDate &b) const
Die Vergleichsoperatoren vergleichen ein IntlDate-Objekt sowohl mit einem anderen IntlDate-Objekt als auch mit einem Long-Datumswert:
| Vergleichsoperatoren mit IntlDate-Objekt |
bool operator == (long n) const
bool operator != (long n) const
bool operator <= (long n) const
bool operator >= (long n) const
bool operator < (long n) const
bool operator > (long n) const
| Vergleichsoperator mit Long-Wert |
IntlDate operator = (const IntlDate &d)
Der Zuweisungsoperator weist dem Objekt den Wert eines anderen IntlDate-Objekts zu.
IntlDate operator = (const TDate &d)
Die zweite Variante des Zuweisungsoperators weist dem IntlDate-Objekt den Wert eines TDate-Objekts zu.
IntlDate operator = (long n)
Eine weitere Variante weist dem Objekt das korrespondierende Datum eines Long-Werts zu.
| Operator = |
friend IntlDate operator + (const IntlDate &d, long n)
Der Summenoperator liefert die Summe des Datums d und dem Integerwert n.
| Operator + |
friend long operator - (const IntlDate &d, const IntlDate &b)
Der Differenzoperator returniert die Differenz in Tagen zwischen den Datumsangaben d und b.
friend IntlDate operator - (const IntlDate &d, long n)
Die zweite Variante des Differenzoperators gibt das datum d vermindert um den Wert n Tage zurück.
| Operator - |
operator long const
Der Operator long liefert die Long-Darstellung eines Datums zurück.
| Operator long |
operator TDate const
Mit dem Operator TDate wird ein IntlDate-Datum in ein TDate-Objekt konvertiert.
Öffentliche Memberfunktionen
| Operator TDate |
char DaysInMonth () const
Die Memberfunktion DaysInMonth returniert die Anzahl der Tage des aktuellen Monats.
| Memberfunktion DaysInMonth |
IntlDate &Dec (DateElement f = idDay,
long n = 1)
Dekrementiert den aktuellen Datumswert über das in f spezifizierte Element um n Einheiten. F kann idDay, idMonth oder idYear sein. Die Datumsvalidierung wird dabei automatisch durchgeführt. Wird z. B. beim aktuellen Datum 31. Oktober um einen Monat dekrementiert, resultiert der 30. September.
| Memberfunktion Dec |
short DosDate () const
DosDate ermittelt das gegenwärtige Datum des Systems im DOS-kompatiblen 16-Bit-Format.
| Memberfunktion DosDate |
WeekDay DoW () const
Liefert den Wochentag des aktuellen Datums.
| Memberfunktion DoW |
in DoY () const
Returniert den Tag des aktuellen Jahrs. Die Werte liegen zwischen 1 und 365 bzw. 356, abhängig davon, ob es sich um ein Schaltjahr handelt.
| Memberfunktion DoY |
int GetDay () const
Liefert den Tag des aktuellen Monats. Dieser Wert liegt zwischen 1 und 28 bzw. 31, abhängig vom jeweiligen Monat.
| Memberfunktion GetDay |
int GetMonth () const
Extrahiert den Monatsanteil aus dem aktuellen Datum.
| Memberfunktion GetMonth |
int GetYear () const
liefert den Jahresanteil des aktuellen Datums.
| Memberfunktion GetYear |
IntlDate &Inc (DateElement f = idDay,
long n = 1)
Inkrementiert den aktuellen Datumswert über das in f spezifizierte Element um n Einheiten. F kann idDay, idMonth oder idYear sein. Die Datumsvalidierung wird dabei automatisch durchgeführt. Wird z. B. beim aktuellen Datum 31. Oktober um einen Monat dekrementiert, resultiert der 30. November.
| Memberfunktion Inc |
IntlDate &InterpretString (
const char *s, const char *fmt = 0,
idLanguage = idUndefLanguage)
IntlDate &InterpretString (
const string &s, const char *fmt = 0,
idLanguage = idUndefLanguage)
IntlDate &InterpretString (
const char *s, const string &fmt,
idLanguage = idUndefLanguage)
IntlDate &InterpretString (
const string &s, const string &fmt,
idLanguage = idUndefLanguage)
Übersetzt das Datum in einen String unter Benutzung des Format Strings fmt. Ist kein Format String spezifiziert, wird die Systemvorgabe verwendet. l gibt an, welche Sprache verwendet werden soll.
| Memberfunktion InterpretString |
bool IsNull () const
Returniert TRUE, wenn das aktuelle Datum 0 ist.
| Memberfunktion IsNull |
bool IsValid () const
IsValid() überprüft das aktuelle Datum auf Gültigkiet und liefert TRUE, wenn das Datum gültig ist, ansonsten FALSE.
| Memberfunktion IsValid |
bool IsLeap () const
Die Memberfunktion IsLeap() liefert TRUE, wenn das aktuelle Jahr ein Schaltjahr ist.
bool IsLeap (int y) const
Die zweite Variante von IsLeap() überprüft ein beliebiges in y bereitgestelltes Jahr auf die Eigenschaft Schaltjahr und liefert im Erfolgsfall TRUE zurück.
| IsLeap |
bool IsValidMonth (int m) const
Mit IsValidMonth() kann m daraufhin überprüft werden, ob es sich um einen gültigen Monat handelt. Dazu muß m zwischen 1 und 12 liegen. Im Erfolgsfall returniert die Funktion TRUE, ansonsten FALSE.
| Memberfunktion IsValidMonth |
bool IsValidMonthDay (int m) const
Die Memberfunktion IsValidMonthDay() überprüft, ob der angegebene Tag m ein gültiger Tag für den Monat des aktuellen Jahrs, ist und liefert im Erfolgsfalls TRUE zurück.
| Memberfunktion IsValidMonthDay |
bool IsValidWeekDay (int d) const
Diese Funktion liefert TRUE, wenn der Tag d im Bereich Monday–Tuesday liegt.
IntlDate &Set (int n, DateElement f = idDay)
| Memberfunktion IsValidWeekDay |
|
Set setzt das Element f des aktuellen Datums auf den Wert n, wobei eine automatische Gültigkeitsprüfung erfolgt.
IntlDate &Set (int d, int m, int y = 0)
Die zweite Variante von Set setzt das Datum auf Tag d, Monat m und Jahr y. Ist y == 0, wird anstelle der Parameterangaben das Systemdatum verwendet.
| Memberfunktion Set |
string String(const char *picture = 0,
idLanguage l = idUndefLanguage)
string String(const string &picture,
idLanguage l = idUndefLanguage)
Übersetzt das Datum in einen String unter Verwendung des Format String fmt und der Sprache l. Ist kein Format spezifiziert, wird die Systemvorgabe verwendet.
| Memberfunktion String |
IntlDate &Today ()
Today() setzt das Datum auf das aktuelle Systemdatum.
| Memberfunktion Today |
IntlDate &Tomorrow ()
Tomorrow() setzt das Datum auf den Tag, der dem aktuellen Systemdatum folgt.
| Memberfunktion Tomorrow |
IntlDate &Yesterday ()
Yesterday() setzt das Datum auf den Tag, der dem aktuellen Systemdatum voranging.
| Memberfunktion Yesterday |
int WoY (int firstWeekDay = int(Monday)) const
Returniert die Kalenderwoche des aktuellen Datums unter der Annahme, daß die erste Kalenderwoche mit dem ersten Arbeitstag des Jahres beginnt.
| Memberfunktion WoY |
IntlDate &Zero ()
Zero setzt das Datum auf 0.
Statische öffentliche Members
| Memberfunktion Zero |
static string &GetPicture ()
GetPicture() liefert einen Zeiger auf den aktuellen Default Format String.
| Memberfunktion GetPicture |
static void SetDefCentury (int century)
Setzt das Jahrhundert, das standardmäßig für kurze, zweistellige Jahreszahlen angenommen wird.
| Memberfunktion SetDefCentury |
static void SetPicture (const char *p)
static void SetPicture (const string &p)
SetPicture() setzt den Standard Format String auf p.
Geschützte Members
| Memberfunktion SetPicture |
static string Picture
In Picture wird der Standard Format String gespeichert.
| Member Picture |
static short defaultCentury
defaultCentury enthält das Jahrhundert, das standardmäßig für die Interpretation kurzer, zweistelliger Jahreszahlen verwendet wird.
| Member defaultCentury |
static const short DaysBeforeMonth[13]
In DaysBeforeMonth wird der jeweils erste Tag jedes Monats für Nicht-Schaltjahre gespeichert.
| Member DaysBeforeMonth |
char day
day speichert den aktuellen Tag des Monats.
| Member day |
char month
In month steht der aktuelle Monat.
| Member month |
char year
year enthält das aktuelle Jahr.
| Member year |
long dayNumber
In dayNumber speichert das Objekt einen Long-Wert, der das akuelle Datum als linearen Wert ausdrückt. Dieser Wert ist immer mit den Werten day, month und year synchronisiert.
| Member dayNumber |
long CalcDayNumber ()
Ermittelt den Wert für dayNumber aus den Werten von day, month und year.
| Memberfunktion CalcDayNumber |
IntlDate &CalcDMY ()
Ermittelt die Werte für day, month und year anhand des aktuellen Wert von dayNumber.
| Memberfunktion CalcDMY
|