Zum Hauptinhalt springen
Featured image for iLogic: Datums- und Zeitangaben

iLogic: Datums- und Zeitangaben

·527 Wörter·3 min·
Inhaltsverzeichnis
Artikelserie: Inventor iLogic
Teil 25 - iLogic: Datums- und Zeitangaben

iLogic bietet im iLogic Editor einige vordefinierte Snippets für die Arbeit mit Datums- und Zeitangaben:

iLogic Snippets für Datums- und Zeitangaben
Methode Datentyp Beschreibung von Autodesk
Now() String Returns a string containing Current Date and Time.
DateString String Returns the current Date.
TimeString String Returns the current Time.

Die Ausgabeformate sind in Teilen jedoch abhängig von global gesetzten Region Settings im Betriebssystem und unterliegen auch kulturellen Gepflogenheiten. So kennt jeder die amerikanischen Unsitten ein Datum im Format MM-DD-YYYY anzugeben und auch sonst alles zu geben, um nicht mit dem metrischen System in Kontakt zu kommen:

Bill Gates zum Launch von Windows XP vor einem Schild mit amerikanischen Datumsangabe

iLogic Snippets

Die eingebauten Snippets können einfach über den iLogic Logger getestet werden und liefern ohne zusätzliche Parameter folgende Ausgaben:

Dim sNow As String = Now()
Dim sDate As String = DateString
Dim sTime As String = TimeString

Logger.Info("'Now()' liefert: {0}", sNow)
Logger.Info("'DateString' liefert: {0}", sDate)
Logger.Info("'TimeString' liefert: {0}", sTime)

Resultat:

Ausgabe Formatieren

Zur Formatierung der Zeitangaben stehen sämtliche Methoden des DateTime Namespace zur Verfügung. Am geläufigsten unter iLogic Code-Beispielen im Inventor Forum ist die Methode DateTime.ToString. Mit ihr können die Ausgaben leicht mittels Date & Time Format Specifiers den eigenen Ansprüchen angepasst werden:

Now.ToString("dd.MM.yyyy")        ' 23.05.2025
Now.ToString("MMMM d, yyyy")      ' May 23, 2025
Now.ToString("dddd, MMMM dd")     ' Friday, May 23
Now.ToString("yyyy-MM-dd HH:mm")  ' 2025-05-23 14:30

Auch stehen die Methoden ToLongDateString, ToShortDateString, ToShortTimeString und ToLongTimeString zur Verfügung:

Logger.Info(Now.ToShortTimeString)  ' 16:02
Logger.Info(Now.ToLongTimeString)   ' 16:02:39
Logger.Info(Now.ToShortDateString)  ' 23.05.2025
Logger.Info(Now.ToLongDateString)   ' 14. Mai 2025

Das Problem beider Beispiele wird schnell ersichtlich, denn sie wurden auf zwei unterschiedlich konfigurierten Computern ausgeführt und berücksichtigen die Region Settings des Betriebssystems:

Windows Region Settings

Monatsangaben erscheinen bspw. einmal auf Englisch (May) und im zweiten Beispiel auf Deutsch (Mai). Dies kann zu Problemen in internationalen Unternehmen führen, da die gewohnten Ausgabeformate für Zeit- und Datumsangaben kulturell variieren und der gemeine Nutzer sein Betriebssystem in der eigenen Landessprache betreibt.

Möchte man ungeachtet der Region Settings immer ein einheitliches Ausgabeformat erzwingen, muss zusätzlich die CultureInfo Class aus dem System.Globalization Namespace hinzugezogen werden.

Das folgende Beispiel formatiert die Ausgaben gemäß amerikanischer Notation (en-US):

Imports System.Globalization

' Beispieldatum: 28.05.2024
Dim dDate As Date = New Date(2024, 05, 28)

Dim culture As CultureInfo = CultureInfo.GetCultureInfo("en-US")

Dim sDateWithoutCulture As String = dDate.ToString("MMMM d, yyyy")
Dim sDateCulture As String = dDate.ToString("MMMM d, yyyy", culture)

Logger.Info("Ohne Culture Info: {0}", sDateWithoutCulture)
Logger.Info("Mit Culture Info: {0}", sDateCulture)

Resultat:

Ausgabe mit und ohne CultureInfo

Zeitdifferenzen berechnen

Zeitdifferenzen können ebenfalls einfach berechnet werden. Das folgende Beispiel ermittelt die vergangenen Tage zwischen den Daten 05.10.2025 und 14.11.2025:

Dim dStartDate As Date = New Date(2025, 10, 05)
Dim dEndDate As Date = New Date(2025, 11, 14)

Dim iDaysDifference As Integer = (dEndDate - dStartDate).Days

Logger.Info("Differenz: {0} Tage", iDaysDifference)

Resultat:

Augabe der Differenzberechnung zweiter Daten

Zeiten Stoppen

Man kann zusätzlich mit der StopWatch Class die Zeit messen, die für die Ausführung einer iLogic benötigt wird. Das kann sinnvoll sein, wenn man unterschiedliche Lösungsansätze für ein Problem gegeneinander auf Performance testen möchte.

Das folgende Beispiel ermittelt, wie lang eine Schleife mit dem Startwert 1, dem Endwert 5, einem Inkrement von 1 und einem künstlichem Delay von 500 ms mittels Thread.Sleep Method zur Ausführung benötigt.

Dim sw As New Stopwatch()
sw.Start()

For i As Integer = 1 To 5 Step 1
    Logger.Info("Schleife {0}", i)
    Threading.Thread.Sleep(500)
Next

sw.Stop()
Logger.Info("Elapsed Time: " & sw.ElapsedMilliseconds & " ms")

Resultat:

Output einer StopWatch Messung
Artikelserie: Inventor iLogic
Teil 25 - iLogic: Datums- und Zeitangaben