當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Elixir NaiveDateTime用法及代碼示例


Elixir語言中 NaiveDateTime 相關用法介紹如下。

一個NaiveDateTime 結構(沒有時區)和函數。

NaiveDateTime 結構包含字段年、月、日、小時、分鍾、秒、微秒和日曆。可以使用 new/2 new/8 函數或使用 ~N(參見 Kernel.sigil_N/2 )印記來構建新的原始日期時間:

iex> ~N[2000-01-01 23:00:07]
~N[2000-01-01 23:00:07]

可以直接訪問結構中的日期和時間字段:

iex> naive = ~N[2000-01-01 23:00:07]
iex> naive.year
2000
iex> naive.second
7

我們稱它們為"naive",因為這種日期時間表示沒有時區。這意味著日期時間可能實際上並不存在於世界上的某些地區,即使它是有效的。

例如,當某個地區應用夏令時更改時,時鍾通常向前或向後移動一小時。這意味著某些日期時間永遠不會發生或可能多次發生。由於 NaiveDateTime 未針對時區進行驗證,因此此類錯誤不會被注意到。

開發人員應避免直接創建NaiveDateTime 結構,而應依賴此模塊提供的函數以及第三方日曆庫中的函數。

比較天真的日期時間

在 Elixir 中使用 ==/2 >/2 </2 和類似的比較是結構性的,並且基於 NaiveDateTime 結構字段。要正確比較原始日期時間,請使用 compare/2 函數。

使用時代

add/3 diff/3 函數可用於計算日期時間或檢索瞬間之間的秒數。例如,如果有興趣計算距 Unix 紀元 (1970-01-01 00:00:00) 的秒數:

iex> NaiveDateTime.diff(~N[2010-04-17 14:00:00], ~N[1970-01-01 00:00:00])
1271512800

iex> NaiveDateTime.add(~N[1970-01-01 00:00:00], 1_271_512_800)
~N[2010-04-17 14:00:00]

這些函數經過優化以處理常見的紀元,例如上麵的 Unix 紀元或公曆紀元 (0000-01-01 00:00:00)。

相關用法


注:本文由純淨天空篩選整理自elixir-lang.org大神的英文原創作品 NaiveDateTime。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。