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 \\ [])。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。