Lade...
 

CX_DATE

CX_DATE CX_DATE.png

Klassenhierarchie
Beschreibung:

Mit dieser Klasse wird ein Tagesdatum, wie z.B. der "3.10.1990" verwaltet. Dabei besteht die Möglichkeit ein unvollständiges Datum, wie z.B. ein Geburtstag ("5. Mai"), anzugeben. Auch die Eingabe eines unbekannten, d.h. undefinierten, Datums ist möglich. (Jedoch nicht per Put!)

Ein vollständiges Datum kann nur zwischen dem 01.01.1583 und dem 01.01.8202 liegen. Versuche, ein Datum außerhalb dieser festen Grenzen zu setzen, werden mit einem Fehler quittiert.

Zusätzlich kann über SystemObject::SetDateLimit eine weitere Grenze gesetzt werden. Obige feste Grenzen können jedoch nie unter- bzw. überschritten werden.

Hinweis: Ein neues CX_DATE-Objekt wird immer mit dem aktuellen Sitzungsdatum initialisiert. Nur falls dies nicht gesetzt ist, wird das aktuelle Systemdatum verwendet.

Darstellung am Bildschirm:

InstantView® Anweisung: Date

Bei der Initialisierung des Oberflächenobjektes wird das aktuelle Sitzungsdatum übernommen. Neben genauen Angaben können auch unvollständige Daten, wie beispielsweise ein Geburtsdatum ("5. Mai") oder auch ein gänzlich unbekanntes Datum, definiert werden. Dazu muss dem Oberflächenobjekt das Flag DF_ALLOW_INCOMPLETE_DATE und (DF_EUROPEAN_FORMAT oder DF_MILITARY_FORMAT) übergeben werden, um die Verarbeitung solcher Datumsangaben zu erlauben. Die folgende Tabelle zeigt die möglichen Eingaben, die erfolgen können und was für ein Datum daraus resultiert:

Eingabe Datum Beschreibung
"27.1.1997" 27.1.1997 Angabe eines genauen Tagesdatums.
"27.1.97" 27.1.1997 Zu der zweistelligen Jahreszahl wird das aktuelle Basis-Jahrhundert, welches in den eingestellten ortsspezifischen Daten definiert ist, addiert. In diesem Beispiel ist es "19".
"5.5" bzw. "5.5.?" 5. Mai Ein fehlendes Jahr wird nicht mit angegeben oder durch ein in den ortsspezifischen Daten definiertes Zeichen (in diesem Fall "?") ersetzt.
"5.13" bzw. "?.5.13"  Mai 1913 Entfällt eine Tagesangabe, so braucht das "Fehlzeichen" nicht angegeben zu werden, wenn die Jahresangabe größer als "12" ist.
"vorgestern", "gestern, "heute", "morgen", "übermorgen"  

Durch sprachliche Begriffe kann ein Tag beschrieben werden. Die Eingabe wird in den vollständigen absoluten Tag umgesetzt (z.B. "4.8.2001"). Die konkreten  Worte richten sich nach der eingestellten Sprache.

Auch ist es 198178 möglich, sofern eindeutig, nur den Anfang eines solchen Begriffs zu verwenden. So kann bspw. für "heute" auch "h" verwandt werden.

"" bzw. "?.?.?" undefiniertes Datum  Ein unbekanntes Datum.

Im Zusammenhang mit diesem Oberflächenobjekt und bestimmten InstantView®-Anweisungen spielen die zum Objekt gehörigen Flags eine wichtige Rolle, da mit Ihnen die Darstellung des Objektes modifiziert werden kann.

Operatoren / Arithmetik
Operator Kurzbeschreibung
+, - Arithmetik 
>, <, = Vergleiche
Code-Beispiel:
// Session date interaction Var(date) CreateTransObject(CX_DATE) -> date //-> <current session/system date> "01.03.2020" date Put // change date date SystemObject Call(SetSessionDate) // change session date CreateTransObject(CX_DATE) //-> "01.03.2020" SystemObject Call(SessionDate) //-> "01.03.2020" 10 date Call(AddDay) // set to "11.03.2020" date SystemObject Call(SetSessionDate) // change session date CreateTransObject(CX_DATE) //-> "11.03.2020" NULL SystemObject Call(SetSessionDate) // reset session date CreateTransObject(CX_DATE) -> date //-> <current system date> // Arithmetics Var(birthday, today) CreateTransObject(CX_DATE) -> today CreateTransObject(CX_DATE) -> birthday "24.07.1992" birthday Put today birthday - //-> eg. 10448 Days

 

 

Methodenverzeichnis (MDI)
Funktion MA* Parameter Rückgabe Kurzbeschreibung
Einzelangaben:        
DayOfDate     INTEGER Tag des Datums
MonthOfDate     INTEGER Monat des Datums
QuarterOfDate     INTEGER Quartal des Datums
TertianOfDate     INTEGER Tertial des Datums
YearOfDate     INTEGER Jahr des Datums
DecadeOfDate     INTEGER Jahrzehnt des Datums
CenturyOfDate     INTEGER Jahrhundert des Datums
MilleniumOfDate     INTEGER Jahrtausend des Datums
         
Wochenangaben:        
WeekOfDate     INTEGER Kalenderwoche des Datums
YearOfWeek     INTEGER Jahr der Kalenderwoche des Datums
DayOfWeek     INTEGER Wert des Wochentages des Datums
DayInWeek     INTEGER Wochentag-Position
         
Monatsangaben:        
DaysInMonth     INTEGER Tagesanzahl im Monat
         
Jahresangaben:        
DayOfYear     INTEGER Tag-Position im Jahr
LeapYear     INTEGER Zeigt an, ob das Jahr ein Schaltjahr ist 
         
Tagestypangaben:        
IsDateType   INTEGER INTEGER Ist das Datum ein "spezieller freier Tag"?
IsTerm     INTEGER Ist das Datum ein Termin?
IsAnniversary     INTEGER Ist das Datum ein Jahrestag?
IsHoliday     INTEGER Ist das Datum ein Feiertag?
IsVacation     INTEGER Ist das Datum ein Ferientag?
IsWorkingday     INTEGER Ist das Datum ein Werktag?
TypeOfDate     INTEGER Typ des Datums
         
Datumsvergleiche:        
Encompassed     INTEGER "Enthalten in"-Test
Overlap     INTEGER Überlappungs-Test
         
Sonstiges:        
AgeInDays   OBJECT, INTEGER INTEGER Genaue Differenz zu einem anderen Datum
AgeInYMD   OBJECT VECTOR Genaue Differenz zu einem anderen Datum 
AgeInFullYears   OBJECT OBJECT Abgerundete Jahresdifferenz zu einem anderen Datum 
AgeInCommencedYears   OBJECT OBJECT Aufgerundete Jahresdifferenz zu einem anderen Datum 
ExportDateNumber   INTEGER, INTEGER STRING Export der Datumszahl als String
ValueOfDate     INTEGER interner Datumswert
         
Einsprachig:        
WeekdayNameOfDay     STRING Wochentagsname
ShortWeekdayNameOfDay     STRING abgekürzter Wochentagsname
NameOfMonth     STRING Monatsname
ShortNameOfMonth     STRING abgekürzter Monatsname
NameOfDay     STRING (Feiertags-)Name des Tages
SpecialNameOfDay   INTEGER STRING bestimmter (Feiertags-)Name des Tages
         
Mehrsprachig:        
MLWeekdayNameOfDay     MLSTRING mehrsprachiger Wochentagsname
MLShortWeekdayNameOfDay     MLSTRING mehrsprachiger abgekürzter Wochentagsname
MLNameOfMonth     MLSTRING mehrsprachiger Monatsname
MLShortNameOfMonth     MLSTRING mehrsprachiger abgekürzter Monatsname
MLNameOfDay     MLSTRING mehrsprachiger (Feiertags-)Name des Tages
MLSpecialNameOfDay   INTEGER MLSTRING bestimmter mehrsprachiger (Feiertags-)Name des Tages
         
Einzelangaben:        
SetDay   INTEGER   Setzen eines neuen Tages
SetMonth   INTEGER   Setzen eines neuen Monats
SetYear   INTEGER   Setzen eines neuen Jahres
ImportDateNumber   STRING, INTEGER   Import einer Datumszahl als String
SetDate   STRING, INTEGER   Import eines Strings
SetToday       Setzen auf Sessiondate bzw. Tagesdatum
SetZero   - - setzt das Datum auf Null
         
Addition/Subtraktion:        
AddDay   INTEGER   Tages-Addition
AddNetDay   INTEGER, INTEGER   Tages-Addition mit Bedingung: WORKINGDAY, TERM, ANNIVERSARY, HOLIDAY, VACATION, REST_TERM
AddWeek   INTEGER   Wochen-Addition
AddMonth   INTEGER   Monats-Addition
AddYear   INTEGER   Jahres-Addition
         
Start/Ende:        
StartOfPeriod     OBJECT Periodenbeginn
RealStartOfPeriod     OBJECT "echter" Periodenbeginn
EndOfPeriod     OBJECT Periodenende
RealEndOfPeriod     OBJECT "echtes" Periodenende
         
Tagesdatum:        
Easter     OBJECT Ostersonntags-Berechnung
Next   INTEGER OBJECT Suche nach einem nächsten bestimmten Wochentag 
Previous   INTEGER OBJECT Suche nach einem vorherigen bestimmten Wochentag 
First   INTEGER OBJECT Suche nach dem ersten (bestimmten) Wochentag im Monat 
Second   INTEGER OBJECT Suche nach dem zweiten (bestimmten) Wochentag im Monat 
Third   INTEGER OBJECT Suche nach dem dritten (bestimmten) Wochentag im Monat 
Fourth   INTEGER OBJECT Suche nach dem vierten (bestimmten) Wochentag im Monat 
Last   INTEGER OBJECT Suche nach dem letzten (bestimmten) Wochentag im Monat 
Day   INTEGER, INTEGER OBJECT Berechnet einen anderen Tag im selben Jahr 
Date   INTEGER, INTEGER, INTEGER OBJECT Berechnet ein bestimmtes Datum
         
Perioden:        
Week     OBJECT Rückgabe der Woche, in der sich das Datum befindet 
Month     OBJECT Rückgabe des Monats, in dem sich das Datum befindet 
Quarter     OBJECT Rückgabe des Quartals, in dem sich das Datum befindet
Tertian     OBJECT Rückgabe des Tertials, in dem sich das Datum befindet
Year     OBJECT Rückgabe des Jahres, in dem sich das Datum befindet
Decade     OBJECT Rückgabe des Jahrzehnts, in dem sich das Datum befindet
Century     OBJECT Rückgabe des Jahrhunderts, in dem sich das Datum befindet
Millenium     OBJECT Rückgabe des Jahrtausends, in dem sich das Datum befindet
         
Sonstiges:        
AbsoluteDayOfYearIndex     INTEGER Rückgabe der Tagesanzahl vom Jahresanfang bis aktuelles Datum
Duration     OBJECT Rückgabe der Periodenlänge (Dauer) einer Datumsperiode 
EndOfPeriodMA *     Periodenende
IsDiffuse     INTEGER testen ob die übergebende Datumsperiode diffuse ist 
IsRepeatedDate   (OBJECT) INTEGER testen ob die zwei Datum gleich sind (ohne Jahresvergleich) 
JoinPeriods   (OBJECT) OBJECT zwei übergebene Datumsperioden zu einer verbinden
NextTerm   (OBJECT) OBJECT der Folgetag innerhalb der Datumsperiode 
OverlappingPeriod   (OBJECT) OBJECT die Schnittmenge (Disjunktion) zweier Datumsperioden berechnen
SpanDate   (OBJECT, OBJECT) OBJECT Erzeugen eine Datumsperiode mit dem übergebenen Start- und EndeDatum  
StartOfPeriodMA *     Periodenbeginn
string   INTEGER CX_STRING Liefert die String-Darstellung des Objektes

* MA = Member-Access-Funktion

 

Datenverzeichnis (DDI)
Datenfeld Typ Referenz-Klasse I* Kurzbeschreibung
this CX_DATE     Das Datum.

* I = Indizierbares Datenfeld

 

Verwendung in AppsWH
Modul Kurzbeschreibung
date.mod Datum Testmodul
sessiond.mod Sitzungsdatum Basismodul
initsdat.mod Initialisierung Modul
initbyea.mod Geschäftsjahr Initialisierung Modul
initfyea.mod Gleitzeitjahr Initialisierung Modul
initsess.mod Sitzungsdatum Initialisierung Modul