Date (Objekt)

Aus SiteparkWiki
Zur Navigation springen Zur Suche springen

Name

Date - Datum und Uhrzeit

Beschreibung

Ein Datum ist eine natürliche Zahl die ein Datum repräsentiert. Das Datum wird in Millisekunden seit dem 1. Januar 1970 um 00:00:00 Uhr GMT angegeben, der sog. UNIX-Time. Ein Datum vor dem 1. Januar 1970 wird mit einem Negativen Wert angegeben. Das Date-Objekt hat einen Zahlenvorrat von 64 bit, was einem Zahlenraum von -9223372036854775808 - 9223372036854775807 entspricht. Damit lassen sich Daten bis ins Jahr 292278994 beschreiben, was wohl für die nächste Zeit ausreichen wird.

Das Reduzieren des Datums auf einen Zahlenwert vereinfacht den Umgang von Daten bei Berechnungen und Sortierungen. Zur Darstellung ist diese Form allerdings nicht geeignet, daher können aus dem Zahlenwert beliebige Datumsformate - beispielsweise bei der Ausgabe mit sp:print erzeugt werden.

Beim Umgang mit einem Datum in Millisekunden ist unter Umständen auch die Zeitzone zu berücksichtigen. Die Millisekunden beziehen sich immer auf die Zeitzone GMT. Dies hat den Vorteil, das überall in der Welt dieses Datum und diese Uhrzeit eindeutig sind. Möchte man die lokale Entsprechung des Datums ausgeben kann das locale-Attribut von sp:print verwendet werden.

Innerhalb des IES bzw. der SPML ist eine Zahl eine Zeichenkette, die sich als Zahl interpretieren lässt. Dadurch können alle Methoden des Objektes String auch auf die Zahlen angewandt werden, z.B. size.

Da die Manipulation von Daten in dieser Form relativ komplex ist, bietet der IES Methoden, die basierend auf das angegebene Datum, ein neues Datum bzw. einen Wert eines Datum zurückliefern.


Ein Datum wird dafür als Kalender-Objekt interpretiert und verfügt dann über folgende Felder:

  • system.constants.YEAR
  • system.constants.MONTH
  • system.constants.WEEK bzw. system.constants.DAY_OF_YEAR
  • system.constants.WEEK_OF_MONTH
  • system.constants.DAY bzw. system.constants.DAY_OF_MONTH
  • system.constants.DAY_OF_YEAR
  • system.constants.DAY_OF_WEEK
  • system.constants.HOUR
  • system.constants.MINUTE
  • system.constants.SECOND
  • system.constants.MILLISECOND


Alternativ stehen zur Berechnung von Datums-Werten auch noch einige statische Kalender Funktionen zur Verfügung.

Methoden

Methode Rückgabewert Beschreibung ab IES Version
dateAdd(String field, Number amount) Date Ändert den Wert des angegebenes Feldes um den übergebenen Zahl (positiv oder negativ) 2.0.4
dateSet(String field, Number amount) Date Setzt ein angegebenes Feld auf einen bestimmten Wert 2.0.4
dateGet(String field) Number Liefert den Wert des angegebenen Feldes zurück 2.0.4
dateFormat(String format) String Gibt eine formatiertes Datum zurück 2.0.4
dateFormat(String format, String locale) String Gibt eine formatiertes Datum zurück 2.0.4
Date dateAdd(String field, Number amount)
Ändert den Wert des angegebenes Feldes um den übergebenen Zahl (positiv oder negativ).
Parameter
field
Angabe Feldes, das inkrementiert bzw. bei negativen Zahlen dekrementiert werden soll. Dabei wird das Feld über die Werte aus System-Konstanten angegeben (z.B. ${system.constants.MONTH}).
amount
Eine Zahl, um die das Feld des Datums inkrementiert, bzw. bei negativen Zahlen dekrementiert werden soll. Wird dabei der Gültigkeitswert überschritten (z.B. bei Stunden die 24), so wird das folgende Feld entsprechend erhöht (hier würde der Wert für Tag um 1 erhöht). Die Regeln für Monate und Schaltjahre werde automatisch berücksichtigt.
Rückgabewert
Date
Zurückgegeben wird ein neues, entsprechend verändertes Datum.
Date dateSet(String field, Number amount)
Setzt den Wert des angegebenes Feldes auf die übergebene Zahl.
Parameter
field
Angabe Feldes, das gesetzt werden soll. Dabei wird das Feld über die Werte aus System-Konstanten angegeben (z.B. ${system.constants.MONTH}).
amount
Eine Zahl die gesetzt werden soll.
Rückgabewert
Date
Zurückgegeben wird ein neues, entsprechend verändertes Datum.
Number dateGet(String field)
Liefert den Wert des angegebenes Feldes.
Parameter
field
Angabe Feldes, das zurückgegeben werden soll. Dabei wird das Feld über die Werte aus System-Konstanten angegeben (z.B. ${system.constants.MONTH}).
Rückgabewert
Number
Zurückgegeben wird der gewünschte Wert des Feldes vom diesem Datum.
String dateFormat(String format)
Liefert das Datum mit der übergebenen Formatierung zurück. Diese Funktion stellt eine einfache Alternative zur Verwendung des Print (SP-Tag) dar.
Parameter
format
Ein String mit dem gewünschten Format des Datums. Weitere Informationen hierzu unter Datumsformat.
Rückgabewert
String
Zurückgegeben wird ein entsprechender String vom diesem Datum.
String dateFormat(String format, String locale)
Liefert das Datum mit der übergebenen Formatierung zurück. Diese Funktion stellt eine einfache Alternative zur Verwendung des Print (SP-Tag) dar.
Parameter
format
Ein String mit dem gewünschten Format des Datums. Weitere Informationen hierzu unter Datumsformat.
locale
Optional kann noch ein String mit einem Locale für die Formatierung angegeben werden.
Rückgabewert
String
Zurückgegeben wird ein entsprechender String vom diesem Datum.

Beispiele

Template Quelltext

<sp:set name="_now" value="${system.now}"/>
now: <sp:print name="_now"/><br>
now.format: <sp:print name="_now" dateformat="dd.MM.yyyy"/><br>
static get year: <sp:print name="year(${_now})"/><br>
now +1 year: <sp:print name="_now.dateAdd(${system.constants.YEAR},1)" dateformat="dd.MM.yyyy"/><br>
now (wurde nicht verändert!): <sp:print name="_now.dateGet(${system.constants.YEAR})"/><br>
<sp:set name="_now" object="_now.dateSet(${system.constants.YEAR},1975).dateSet(${system.constants.MONTH},6)"/>
1975: <sp:print name="_now.dateSet(${system.constants.DAY},6)" dateformat="yyyy"/><br>
06.07.1975: <sp:print name="_now.dateSet(${system.constants.DAY},6).dateFormat('dd.MM.yyyy')"/><br>
6. July 1975 - en: <sp:print name="_now.dateSet(${system.constants.DAY},6).dateFormat('dd. MMMM yyyy','en')"/><br>
6. Juli 1975 - de: <sp:print name="_now.dateSet(${system.constants.DAY},6).dateFormat('dd. MMMM yyyy','de')"/><br>

Ausgabe

now: 1243510431481
now.format: 28.05.2009
static get year: 2009
now +1 year: 28.05.2010
now (wurde nicht verändert!): 2009
1975: 1975
06.07.1975: 06.07.1975
6. July 1975 - en: 06. July 1975
6. Juli 1975 - de: 06. Juli 1975