Die Formatierung von Datumswerten wird häufig benötigt und wird in den verschiedenen Skripting- bzw. Progammiersprachen teilweise unterschiedlich gehandhabt.
In diesem Artikel möchte ich dir einen groben Überblick über die in der Matrix42-Welt verwendeten Sprachen und deren Funktionen zur Datums-Formatierung geben. Folgende Sprachen sind hierbei relevant:
- ASQL
- Javascript
- SQL
- Powershell
- VisualBasic (In Workflows)
In den folgenden Abschnitten werden die jeweiligen Funktionen vorgestellt.
ASQL
Im ASQL-Bereich gibt es häufig die Möglichkeit, die Darstellung eines DateTime-Attributes im gewünschten Format darzustellen. Im Layout Designer bringen hier die jeweiligen Controls die Einstellungsmöglichkeiten mit.
In Datenquellen (die sich übrigens auch um eigene Felder erweitern lassen) bietet sich zusätzlich die Möglichkeit mittels eines Format-Wertes die Darstellung zu konfigurieren. Hierbei werden die Werte shortDate (Datum) bzw. short (Datum+Zeit) häufig verwendet und können an dieser Stelle an der Spalte einer Datenquelle hinterlegt werden:
Neben der Darstellung in regulären Steuerelementen gibt es auch Möglichkeiten ein Datum in z.B. einem Anzeigeausdruck wie folgt darzustellen:
DatePart(day, dateVar) + '.' + DatePart(month, dateVar) + '.' + DatePart(year, dateVar)
Code-Sprache: JavaScript (javascript)
Noch einfacher ist es, wenn der Datumswert als String gecastet wird:
Cast(dateVar, string, 'dd.MM.yyyy')
Code-Sprache: JavaScript (javascript)
Hier gilt es nur zu beachten, dass die Sortierung anschließend nicht mehr wirklich funktioniert 😉
JavaScript
In Javascript ist die Formatierung eines Datums relativ einfach. Hierzu verwendet man lediglich die Funktion “toLocaleDateString”. Verwendet wird dieses Javascript-Snippet häufig in Assistenten, Dialogen oder Schnellansichten.
const options = { year: 'numeric', month: '2-digit', day: '2-digit' };
var strDate = dateVar.$value.toLocaleDateString('de-DE', options);
Code-Sprache: PHP (php)
SQL
Die Notwendigkeit der Datumsformatierung in SQL-Abfragen ist teilweise in Ad-Hoc-Abfragen gegeben, wird hier jedoch primär der Vollständigkeit halber aufgeführt. Dabei kann ein Datum über folgendes Snippet formiert werden:
FORMAT([MyDate],'dd.MM.yyyy')
Code-Sprache: SQL (Structured Query Language) (sql)
Danke an Sascha für den Hinweis 🙂
Die Formatierung von Datumswerten in SQL Reporting Services sind über Standardwege möglich:
Powershell
In PowerShell wird lediglich die “ToString”-Funktion verwendet, um ein Datum formatiert auszugeben. Dabei wird der Funktion das gewünschte Format als Attribut in den Klammern mitgegeben:
$dataVar.ToString("dd.MM.yyyy")
Code-Sprache: PHP (php)
Eine gute Übersicht über die möglichen Format-Werte bietet die Dokumentation von Microsoft. Dabei gibt es auch eine Reihe von Standard-Formaten, welche verwendet werden können.
Hast du schon gewusst, dass du Asset-Daten der Matrix42 ESM Lösung auch über die API via PowerShell abfragen kannst?
Visual Basic (Workflows)
Möchtest du ein Datum zum Beispiel in einem Beschreibungstext angeben, ergibt es Sinn dieses vorher zu formatieren. Dazu kann in Workflows folgendes Snippet in einer Assign-Activity verwendet werden:
dateVar.ToString("dd.MM.yyyy")
Code-Sprache: CSS (css)
Hierbei muss berücksichtigt werden, dass die Datumswerte in der Datenbank im UTC-Format gespeichert werden. Um diese UTC-Zeit in eine lokale Zeitzone umzuwandeln, kann folgendes Snippet verwendet werden:
dateVar.ToLocalTime.ToString("dd.MM.yyyy HH:ii")
Code-Sprache: CSS (css)
Falls du übrigens wissen willst, wie man in Workflows neue Guid Variablen anlegen kann, haben wir da auch was 😉
Auch an dieser Stelle können die unter dem Abschnitt “PowerShell” bereits erwähnten Format-Werte bzw. Standard-Formate aus der Microsoft-Dokumentation verwendet werden.
Ich hoffe, dieser Artikel konnte dir einen groben Überblick über die verschiedenen Arten der Datumsformatierungen bieten. In einem späteren Artikel möchte ich dann noch das Rechnen mit Datums-Werten thematisieren.