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
)或任何Map,隻要它們包含格式化所需的所有相關字段。例如,如果您使用DateTime
%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 |
m | Month | 01、12 |
M | Minute | 00, 59 |
p | "AM" 或 "PM"(中午是 "PM",午夜是 "AM") | 上午下午 |
P | "am" 或 "pm"(中午是 "pm",午夜是 "am") | 上午下午 |
q | Quarter | 1、2、3、4 |
S | Second | 00、59、60 |
u | 一周中的天 | 1(星期一)、7(星期日) |
x | 首選日期(無時間)表示 | 2018-10-17 |
X | 首選時間(無日期)表示 | 12:34:56 |
y | 年份為 2 位數 | 01、01、86、18 |
Y | Year | -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 Calendar.ISO.date_to_string用法及代碼示例
- Elixir Calendar.ISO.time_to_string用法及代碼示例
- Elixir Calendar.ISO.naive_datetime_to_string用法及代碼示例
- Elixir Calendar.ISO.naive_datetime_from_iso_days用法及代碼示例
- Elixir Calendar.ISO.day_of_era用法及代碼示例
- Elixir Calendar.ISO.valid_date?用法及代碼示例
- Elixir Calendar.ISO.day_of_week用法及代碼示例
- Elixir Calendar.ISO.parse_date用法及代碼示例
- Elixir Calendar.ISO.quarter_of_year用法及代碼示例
- Elixir Calendar.time_zone_database用法及代碼示例
- Elixir Calendar.ISO.days_in_month用法及代碼示例
- Elixir Calendar.ISO.leap_year?用法及代碼示例
- Elixir Calendar.ISO.day_of_year用法及代碼示例
- Elixir Calendar.ISO.year_of_era用法及代碼示例
- Elixir Calendar.ISO.naive_datetime_to_iso_days用法及代碼示例
- Elixir Calendar.ISO.datetime_to_string用法及代碼示例
- Elixir Calendar.ISO.parse_utc_datetime用法及代碼示例
- Elixir Calendar.ISO.parse_time用法及代碼示例
- Elixir Calendar.ISO.time_from_day_fraction用法及代碼示例
- Elixir Calendar.ISO.parse_naive_datetime用法及代碼示例
- Elixir Calendar.ISO.months_in_year用法及代碼示例
- Elixir Calendar.ISO.time_to_day_fraction用法及代碼示例
- Elixir Calendar.ISO用法及代碼示例
- Elixir Calendar.ISO.valid_time?用法及代碼示例
- Elixir Code.prepend_path用法及代碼示例
注:本文由純淨天空篩選整理自elixir-lang.org大神的英文原創作品 Calendar.strftime(date_or_time_or_datetime, string_format, user_options \\ [])。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。