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
函數可用於計算日期時間或檢索瞬間之間的秒數。例如,如果有興趣計算距 Unix 紀元 (1970-01-01 00:00:00) 的秒數:diff/3
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 NaiveDateTime.utc_now用法及代碼示例
- Elixir NaiveDateTime.from_gregorian_seconds用法及代碼示例
- Elixir NaiveDateTime.truncate用法及代碼示例
- Elixir NaiveDateTime.from_erl!用法及代碼示例
- Elixir NaiveDateTime.from_iso8601用法及代碼示例
- Elixir NaiveDateTime.from_erl用法及代碼示例
- Elixir NaiveDateTime.convert!用法及代碼示例
- Elixir NaiveDateTime.new!用法及代碼示例
- Elixir NaiveDateTime.to_erl用法及代碼示例
- Elixir NaiveDateTime.diff用法及代碼示例
- Elixir NaiveDateTime.to_iso8601用法及代碼示例
- Elixir NaiveDateTime.local_now用法及代碼示例
- Elixir NaiveDateTime.compare用法及代碼示例
- Elixir NaiveDateTime.to_string用法及代碼示例
- Elixir NaiveDateTime.new用法及代碼示例
- Elixir NaiveDateTime.convert用法及代碼示例
- Elixir NaiveDateTime.to_time用法及代碼示例
- Elixir NaiveDateTime.from_iso8601!用法及代碼示例
- Elixir NaiveDateTime.to_date用法及代碼示例
- Elixir NaiveDateTime.to_gregorian_seconds用法及代碼示例
- Elixir NaiveDateTime.add用法及代碼示例
- Elixir Node.ping用法及代碼示例
- Elixir Node.start用法及代碼示例
- Elixir StringIO.flush用法及代碼示例
- Elixir Calendar.ISO.date_to_string用法及代碼示例
注:本文由純淨天空篩選整理自elixir-lang.org大神的英文原創作品 NaiveDateTime。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。