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


Elixir Calendar.strftime用法及代碼示例


Elixir語言中 Calendar.strftime 相關用法介紹如下。

用法:

strftime(date_or_time_or_datetime, string_format, user_options \\ [])
(從 1.11.0 開始)
@spec strftime(map(), String.t(), keyword()) :: String.t()

將收到的日期時間格式化為字符串。

日期時間可以是任何日曆類型( Time Date NaiveDateTime DateTime )或任何Map,隻要它們包含格式化所需的所有相關字段。例如,如果您使用%Y 來格式化年份,則日期時間必須具有:year 字段。因此,如果您將 Time 或沒有 :year 字段的映射傳遞給需要 %Y 的格式,則會引發錯誤。

選項

  • :preferred_datetime - 顯示日期時間的首選格式的字符串,它不能包含 %c 格式,如果未收到該選項,則默認為 "%Y-%m-%d %H:%M:%S"

  • :preferred_date - 顯示日期的首選格式的字符串,它不能包含 %x 格式,如果未收到選項,則默認為 "%Y-%m-%d"

  • :preferred_time - 顯示時間的首選格式的字符串,它不能包含 %X 格式,如果未收到選項,則默認為 "%H:%M:%S"

  • :am_pm_names - 接收 :am:pm 並返回一天中時段名稱的函數,如果未收到該選項,則默認為分別返回 "am""pm" 的函數

  • :month_names - 接收數字並返回對應月份名稱的函數,如果未接收到該選項,則默認為返回英文月份名稱的函數

  • :abbreviated_month_names - 接收數字並返回對應月份縮寫名稱的函數,如果沒有接收到該選項則默認為返回英文縮寫月份名稱的函數

  • :day_of_week_names - 接收數字並返回對應星期幾名稱的函數,如果未接收到該選項則默認為返回英文星期幾名稱的函數

  • :abbreviated_day_of_week_names - 接收數字並返回對應星期幾的縮寫名稱的函數,如果未接收到該選項,則默認為返回英文縮寫星期名稱的函數

格式化語法

strftime 的格式化語法是以下格式的字符序列:

%<padding><width><format>

其中:

  • % :表示格式化部分的開始
  • <padding> :設置填充(見下文)
  • <width> : 一個數字,表示格式化部分的最小大小
  • <format> :格式本身(見下文)

接受的填充選項

  • - :無填充,從格式中刪除所有填充
  • _:用空格填充
  • 0:用零填充

接受的格式

接受的格式是:

格式說明示例(在 ISO 中)
a日期的縮寫名稱Mon
A一天的全稱Monday
b縮寫月份名稱Jan
B完整的月份名稱January
c首選日期+時間表示2018-10-17 12:34:56
d一個月中的哪一天01, 31
f微秒 (does not support width and padding modifiers)000000, 999999, 0123
H使用 24 小時製的小時00, 23
I使用 12 小時製的小時01、12
j一年中的一天001, 366
mMonth01、12
MMinute00, 59
p"AM" 或 "PM"(中午是 "PM",午夜是 "AM")上午下午
P"am" 或 "pm"(中午是 "pm",午夜是 "am")上午下午
qQuarter1、2、3、4
SSecond00、59、60
u一周中的天1(星期一)、7(星期日)
x首選日期(無時間)表示2018-10-17
X首選時間(無日期)表示12:34:56
y年份為 2 位數01、01、86、18
YYear-0001, 0001, 1986
z+hhmm/-hhmm 與 UTC 的時區偏移量(如果不成熟,則為空字符串)+0300, -0530
Z時區縮寫(如果幼稚則為空字符串)中歐、BRST
%文字 "%" 字符%

任何其他字符都將被解釋為無效格式並引發錯誤

例子

沒有選項:

iex> Calendar.strftime(~U[2019-08-26 13:52:06.0Z], "%y-%m-%d %I:%M:%S %p")
"19-08-26 01:52:06 PM"

iex> Calendar.strftime(~U[2019-08-26 13:52:06.0Z], "%a, %B %d %Y")
"Mon, August 26 2019"

iex> Calendar.strftime(~U[2020-04-02 13:52:06.0Z], "%B %-d, %Y")
"April 2, 2020"

iex> Calendar.strftime(~U[2019-08-26 13:52:06.0Z], "%c")
"2019-08-26 13:52:06"

有選項:

iex> Calendar.strftime(~U[2019-08-26 13:52:06.0Z], "%c", preferred_datetime: "%H:%M:%S %d-%m-%y")
"13:52:06 26-08-19"

iex> Calendar.strftime(
...>  ~U[2019-08-26 13:52:06.0Z],
...>  "%A",
...>  day_of_week_names: fn day_of_week ->
...>    {"segunda-feira", "terça-feira", "quarta-feira", "quinta-feira",
...>    "sexta-feira", "sábado", "domingo"}
...>    |> elem(day_of_week - 1)
...>  end
...>)
"segunda-feira"

iex> Calendar.strftime(
...>  ~U[2019-08-26 13:52:06.0Z],
...>  "%B",
...>  month_names: fn month ->
...>    {"январь", "февраль", "март", "апрель", "май", "июнь",
...>    "июль", "август", "сентябрь", "октябрь", "ноябрь", "декабрь"}
...>    |> elem(month - 1)
...>  end
...>)
"август"

相關用法


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