当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


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