codecamp

Smarty:date_format

date_format

将日期和时间格式化成strftime()的格式。 时间可以是unix的 时间戳, DateTime 对象, mysql时间戳,或者月日年格式的字符串,与PHP函数strtotime()类似。 模板设计者可以对date_format的格式有完全的控制。 如果传递到date_format的时间为空, 而第二个参数传递了值,那么第二个参数将作为需要格式化的时间。

参数顺序类型必选参数默认值说明
1stringNo%b %e, %Y输出时间的格式定义
2stringNon/a如果输入为空,则作为默认时间。

温馨提示:

从Smarty-2.6.10开始,给date_format传递 数字值将一直被当作unix时间戳(除了mysql时间戳,看下文)。

在Smarty-2.6.10之前,数字值(如 YYYYMMDD)使用了php函数strtotime()来进行处理, 所以有时候值会被看作时间字符串而不是时间戳(取决于strtotime()的实现)。

唯一的例外mysql时间戳:14位数字值(YYYYMMDDHHMMSS), mysql时间戳比unix时间戳更优先匹配。

程序设计者说明

date_format是派生于PHP函数 strftime()的wrapper。 在PHP编译时strftime()的支持格式的数量将会受到系统影响。 请系统的说明找出完整的格式列表。 然而,部分格式是模拟了windows的行为,如 %D, %e, %h, %l, %n, %r, %R, %t, %T。

Example 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 - 和 %G 一样,但是没有世纪

  • %G - 4 位数的年份

  • %h - 和 %b 一样

  • %H - 24 小时制的十进制小时数(范围从 00 到 23)

  • %I - 12 小时制的十进制小时数(范围从 00 到 12)

  • %j - 年份中的第几天,十进制数(范围从 001 到 366)

  • %k - 小时,24 小时格式,没有前导零

  • %l - 小时,12 小时格式,没有前导零

  • %m - 十进制月份(范围从 01 到 12)

  • %M - 十进制分钟数

  • %n - 换行符

  • %p - 根据给定的时间值为 `am' 或 `pm',或者当前区域设置中的相应字符串

  • %r - 用 a.m. 和 p.m. 符号的时间

  • %R - 24 小时符号的时间

  • %S - 十进制秒数

  • %t - 制表符

  • %T - 当前时间,和 %H:%M:%S 一样

  • %u - 星期几的十进制数表达 [1,7],1 表示星期一

  • %U - 本年的第几周,从第一周的第一个星期天作为第一天开始

  • %V - 本年第几周的 ISO 8601:1988 格式,范围从 01 到 53,第 1 周是本年第一个至少还有 4 天的星期,星期一作为每周的第一天。(用 %G 或者 %g 作为指定时间戳相应周数的年份组成。)

  • %w - 星期中的第几天,星期天为 0

  • %W - 本年的第几周数,从第一周的第一个星期一作为第一天开始

  • %x - 当前区域首选的时间表示法,不包括时间

  • %X - 当前区域首选的时间表示法,不包括日期

  • %y - 没有世纪数的十进制年份(范围从 00 到 99)

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

  • %Z - 时区名或缩写

  • %% - 文字上的 `%' 字符

参见 $smarty.nowstrftime(){html_select_date} 和 时间技巧文章.

Smarty:count_words
Smarty:default
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

I.Smarty基础

1.Smart是什么?

II.Smarty模板设计师篇

6.Smarty复合修饰器

9.Smarty配置文件

10.Smarty调试控制台

III. 程序开发者篇

11. Smarty字符集编码

12.Smarty常量

13.Smarty成员变量

14.Smarty成员方法

17.Smarty高级特性

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }