Smarty 图标

根据商标声明使用 Smarty 徽标。

Smarty Template Engine Smarty Template Engine

关于赞助、广告、新闻或其他查询,请联系

使用 Smarty 的网站

广告

date_format

这会按照给定的 strftime() 格式将日期和时间格式化。可以使用 unix 时间戳DateTime 对象、mysql 时间戳或任何可被 PHP strtotime() 解析的由月日年组成的字符串的形式将日期传递到 Smarty。然后,设计人员可以使用 date_format 完全控制日期的格式化。如果传递给 date_format 的日期是空的并且传递了第二个参数,则该参数将用作要格式化的日期。

参数位置 类型 必需 默认值 描述
1 字符串 %b %e, %Y 这是输出日期的格式。
2 字符串 不适用 如果输入为空,这是默认日期。

注意

自 Smarty-2.6.10 起,传递给 date_format 的数值(mysql 时间戳除外,见下文)始终会被解释为 unix 时间戳。

在 Smarty-2.6.10 之前,PHP 中还可被 strtotime() 解析的数字字符串(如 YYYYMMDD)有时(取决于 strtotime() 的底层实现)会被解释为日期字符串,而不是时间戳。

唯一的例外是 mysql 时间戳:它们也只有数字且有 14 个字符 (YYYYMMDDHHMMSS),mysql 时间戳优先于 unix 时间戳。

程序员注意

date_format 本质上是 PHP strftime() 函数的封装器。根据编译 PHP 时系统 strftime() 函数的转换说明符,可能会有更多或更少的转换说明符可用。请查看系统的手册页以了解有效说明符的完整列表。但是,在 Windows 上模拟了几个说明符。它们是:%D、%e、%h、%l、%n、%r、%R、%t、%T。

示例 5.8。date_format

<?php

$config['date'] = '%I:%M %p';
$config['time'] = '%H:%M:%S';
$smarty->assign('config', $config);
$smarty->assign('yesterday', strtotime('-1 day'));

?>

   

此模板使用 $smarty.now 获取当前时间

{$smarty.now|date_format}
{$smarty.now|date_format:"%D"}
{$smarty.now|date_format:$config.date}
{$yesterday|date_format}
{$yesterday|date_format:"%A, %B %e, %Y"}
{$yesterday|date_format:$config.time}

   

上述内容的输出结果为

Jan 1, 2022
01/01/22
02:33 pm
Dec 31, 2021
Monday, December 1, 2021
14:33:00

   

date_format 格式化说明符

  • %a - 根据当前区域设置缩写的星期名字

  • %A - 根据当前区域设置显示完整的星期名字

  • %b - 根据当前区域设置缩写的月份名字

  • %B - 根据当前区域设置显示完整的月份名字

  • %c - 当前区域设置的首选日期时间表示

  • %C - 世纪数(年数除以 100 并截断为整数,范围为 00 到 99)

  • %d - 以十进制数显示的月份中的日期(范围为 01 至 31)

  • %D - 与 %m/%d/%y 相同

  • %e - 以十进制数显示的月份中的日期,个位数前有空格(范围为 1 至 31)

  • %g - 世纪内基于星期的年份 [00,99]

  • %G - 基于星期的年份,包括世纪 [0000,9999]

  • %h - 与 %b 相同

  • %H - 使用 24 小时制显示的小时数,十进制数(范围为 00 到 23)

  • %I - 使用 12 小时制显示的小时数,十进制数(范围为 01 至 12)

  • %j - 作为十进制数的年数中的日期(范围为 001 至 366)

  • %k - 24 小时制小时数,个位数前面有空格。(范围为 0 至 23)

  • %l - 使用 12 小时制显示的小时数,十进制数,个位数前面有空格(范围为 1 至 12)

  • %m - 月份,十进制数(范围为 01 至 12)

  • %M - 分钟数,十进制数

  • %n - 换行符

  • %p - 根据给定的时间值显示“am”或“pm”,或显示当前区域设置的对应字符串

  • %r - 上午/下午时间表示法中的时间

  • %R - 24 小时表示法中的时间

  • %S - 秒数,十进制数

  • %t - 制表符

  • %T - 当前时间,等于 %H:%M:%S

  • %u - 星期数,十进制数 [1,7],其中 1 代表星期一

  • %U - 当年作为十进制数的周数,从第一个星期日作为第一周的第一天开始

  • %V - 当前年份的 ISO 8601:1988 周数(十进制数,范围为 01 至 53),其中第 1 周是在当年至少有 4 天的第一周,星期一为一周的第一天。

  • %w - 作为十进制数的星期数,星期天为 0

  • %W - 当年作为十进制数的周数,从第一个星期一作为第一周的第一天开始

  • %x - 常规的日期表示,不带时间,根据当前区域设置

  • %X - 常规的时间表示,不带日期,根据当前区域设置

  • %y - 不含世纪数的年份,十进制数(范围为 00 至 99)

  • %Y - 包含世纪数的年份,十进制数

  • %Z - 时区或名称或缩写

  • %% - 文本 % 字符

另请参见 $smarty.nowstrftime(){html_select_date}日期技巧 页面。