Smarty:date_format

2018-10-12 15:21 更新

date_format

將日期和時(shí)間格式化成strftime()的格式。 時(shí)間可以是unix的 時(shí)間戳, DateTime 對(duì)象, mysql時(shí)間戳,或者月日年格式的字符串,與PHP函數(shù)strtotime()類似。 模板設(shè)計(jì)者可以對(duì)date_format的格式有完全的控制。 如果傳遞到date_format的時(shí)間為空, 而第二個(gè)參數(shù)傳遞了值,那么第二個(gè)參數(shù)將作為需要格式化的時(shí)間。

參數(shù)順序類型必選參數(shù)默認(rèn)值說明
1stringNo%b %e, %Y輸出時(shí)間的格式定義
2stringNon/a如果輸入為空,則作為默認(rèn)時(shí)間。

溫馨提示:

從Smarty-2.6.10開始,給date_format傳遞 數(shù)字值將一直被當(dāng)作unix時(shí)間戳(除了mysql時(shí)間戳,看下文)。

在Smarty-2.6.10之前,數(shù)字值(如 YYYYMMDD)使用了php函數(shù)strtotime()來進(jìn)行處理, 所以有時(shí)候值會(huì)被看作時(shí)間字符串而不是時(shí)間戳(取決于strtotime()的實(shí)現(xiàn))。

唯一的例外mysql時(shí)間戳:14位數(shù)字值(YYYYMMDDHHMMSS), mysql時(shí)間戳比unix時(shí)間戳更優(yōu)先匹配。

程序設(shè)計(jì)者說明

date_format是派生于PHP函數(shù) strftime()的wrapper。 在PHP編譯時(shí)strftime()的支持格式的數(shù)量將會(huì)受到系統(tǒng)影響。 請系統(tǒng)的說明找出完整的格式列表。 然而,部分格式是模擬了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取得當(dāng)前的時(shí)間:

{$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 - 當(dāng)前區(qū)域星期幾的簡寫

  • %A - 當(dāng)前區(qū)域星期幾的全稱

  • %b - 當(dāng)前區(qū)域月份的簡寫

  • %B - 當(dāng)前區(qū)域月份的全稱

  • %c - 當(dāng)前區(qū)域首選的日期時(shí)間表達(dá)

  • %C - 世紀(jì)值(年份除以 100 后取整,范圍從 00 到 99)

  • %d - 月份中的第幾天,十進(jìn)制數(shù)字(范圍從 01 到 31)

  • %D - 和 %m/%d/%y 一樣

  • %e - 月份中的第幾天,十進(jìn)制數(shù)字,一位的數(shù)字前會(huì)加上一個(gè)空格(范圍從 ' 1' 到 '31')

  • %g - 和 %G 一樣,但是沒有世紀(jì)

  • %G - 4 位數(shù)的年份

  • %h - 和 %b 一樣

  • %H - 24 小時(shí)制的十進(jìn)制小時(shí)數(shù)(范圍從 00 到 23)

  • %I - 12 小時(shí)制的十進(jìn)制小時(shí)數(shù)(范圍從 00 到 12)

  • %j - 年份中的第幾天,十進(jìn)制數(shù)(范圍從 001 到 366)

  • %k - 小時(shí),24 小時(shí)格式,沒有前導(dǎo)零

  • %l - 小時(shí),12 小時(shí)格式,沒有前導(dǎo)零

  • %m - 十進(jìn)制月份(范圍從 01 到 12)

  • %M - 十進(jìn)制分鐘數(shù)

  • %n - 換行符

  • %p - 根據(jù)給定的時(shí)間值為 `am' 或 `pm',或者當(dāng)前區(qū)域設(shè)置中的相應(yīng)字符串

  • %r - 用 a.m. 和 p.m. 符號(hào)的時(shí)間

  • %R - 24 小時(shí)符號(hào)的時(shí)間

  • %S - 十進(jìn)制秒數(shù)

  • %t - 制表符

  • %T - 當(dāng)前時(shí)間,和 %H:%M:%S 一樣

  • %u - 星期幾的十進(jìn)制數(shù)表達(dá) [1,7],1 表示星期一

  • %U - 本年的第幾周,從第一周的第一個(gè)星期天作為第一天開始

  • %V - 本年第幾周的 ISO 8601:1988 格式,范圍從 01 到 53,第 1 周是本年第一個(gè)至少還有 4 天的星期,星期一作為每周的第一天。(用 %G 或者 %g 作為指定時(shí)間戳相應(yīng)周數(shù)的年份組成。)

  • %w - 星期中的第幾天,星期天為 0

  • %W - 本年的第幾周數(shù),從第一周的第一個(gè)星期一作為第一天開始

  • %x - 當(dāng)前區(qū)域首選的時(shí)間表示法,不包括時(shí)間

  • %X - 當(dāng)前區(qū)域首選的時(shí)間表示法,不包括日期

  • %y - 沒有世紀(jì)數(shù)的十進(jìn)制年份(范圍從 00 到 99)

  • %Y - 包括世紀(jì)數(shù)的十進(jìn)制年份

  • %Z - 時(shí)區(qū)名或縮寫

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

參見 $smarty.nowstrftime(){html_select_date} 和 時(shí)間技巧文章.

以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)