Es hängt davon ab, in welchem Format Sie es möchten.
Sie können jede Funktion in der Erlang-Standardbibliothek von Elixir verwenden. Traditionell würden Sie die Zeit mit der now/0
Funktion bekommen:
iex(1)> :erlang.now
{1487, 549978, 29683}
time_t
Dies entspricht 1.487.549.978,29683, was 19 Minuten und 38,29683 Sekunden nach Mitternacht UTC am Montag, dem 20. Februar 2017, entspricht.
Seit Erlang / OTP 18 ist diese Funktion jedoch veraltet. Einer der Gründe ist, dass Erlang garantiert, dass der Rückgabewert bei jedem Anruf erhöht wird. Wenn Sie es in einer engen Schleife auf einem Computer schnell genug aufrufen, um es mehr als einmal pro Mikrosekunde aufzurufen, wird der zurückgegebene Zeitstempel der Echtzeit voraus.
Der Ersatz ist eine API mit mehr Präzision und Kontrolle . Die primäre Schnittstelle zu dieser neuen API ist die os:system_time/0
Funktion, die die Epochenzeit in einer systemdefinierten Einheit zurückgibt:
iex(2)> :os.system_time
1487549978296838000
Sie können jedoch eine bestimmte Einheit anfordern mit system_time/1
:
iex(3)> :os.system_time(:millisecond)
1487549978296
Seit Elixir 1.2 sind diese Funktionen auch im nativen System
Modul verfügbar :
iex(4)> System.system_time(:second)
1487549978
Verwenden calendar
Sie für eine benutzerfreundlichere, aber dennoch Elixir-native Benutzeroberfläche das Modul, mit dem Sie Tupel erhalten:
iex(5)> :calendar.universal_time
{{2017, 2, 20}, {0, 19, 38}}
Seit 1.3 verfügt Elixir auch über eine eigene Reihe von Modulen zur Bearbeitung von Datum und Uhrzeit: Date
und DateTime
. Sie können seine Funktionen verwenden, um das aktuelle Datum oder die aktuelle Uhrzeit wie folgt abzurufen:
iex(6)> Date.utc_today
~D[2017-02-20]
iex(7)> DateTime.utc_now
#DateTime<2017-02-20 00:19:38.29683Z>