strftime()

1. 定义

根据本地区域设置(setlocale()函数)的时区格式化本地日期/时间。 返回被格式化后的日期字符串。

2. 语法

strftime ( string $format [, int $timestamp = time() ] ) : string

3. 参数说明

参数 可选性 数据类型 描述
$format 必需 字符串 符合规范的解析日期/时间的格式化字符串
$timestamp 可选 整型 整型的时间戳,默认为当前时间(time()

其中,$format参数有以下几种符号格式规则:

格式 描述
%C 两位数显示世纪(年份除以 100,截成整数)
%g 2 位数的年份,和%V的格式和值一样,只除了如果ISO星期数属于前一年或或者后一年,就使用那一年
%G %g的完整四位数版本
%y 两位数显示年份
%Y 四位数显示年份
%b 当前区域月份的简写
%B 当前区域月份的全称
%h 当前区域月份的简写(%b的别名)
%m 两位数的月份
%U 本年的第几周,从第一周的第一个星期天作为第一天开始
%V 本年第几周的ISO-8601:1988格式,范围从 01 到 53,第 1 周是本年第一个至少还有 4 天的星期,星期一作为每周的第一天
%W 本年的第几周数,从第一周的第一个星期一作为第一天开始
%a 当前区域星期几的简写
%A 当前区域星期几的全称
%d 月份中的第几天,十进制数字(范围从 01 到 31)
%e 月份中的第几天,十进制数字,一位的数字前会加上一个空格(范围从 ' 1' 到 '31')
%j 年份中的第几天,带前导零的三位十进制数(范围从 001 到 366)
%u 符合 ISO-8601 星期几的十进制数表达 [1,7],1 表示星期一
%w 星期中的第几天,星期天为 0
%H 以 24 小时格式显示两位小时数
%I 以 12 小时格式显示两位小时数
%l 以 12 小时格式显示小时数,单个数字前含空格
%M 两位的分钟数
%p 指定时间的大写AMPM
%P 指定时间的小写ampm
%r %I:%M:%S %p一样
%R %H:%M一样
%S 两位数字表示秒
%T %H:%M:%S一样
%X 当前区域首选的时间表示法,不包括日期
%z 从 UTC 的时区偏移 或 简写(由操作系统决定)
%Z %z没有给出的UTC的时区偏移或简写(由操作系统决定)
%c 当前区域首选的日期时间表达
%D %m/%d/%y一样
%F 等同于%Y-%m-%d
%s Unix纪元的时间戳(和 time() 函数一样)
%x 当前区域首选的时间表示法,不包括时间
%n 换行符(\n)
%t Tab 字符(\t)
%% 文字上的百分字符(%)

4. 示例

<?php

// strftime()
// 根据本地区域设置(`setlocale()`函数)的时区格式化本地日期/时间

echo '现在是', (int)strftime('%C') + 1,'世纪 ', strftime('%Y'), ' 年', strftime('%m'), '月', strftime('%d'), ' 日',"\n";
echo '正是今年的第 ', strftime('%V'), ' 周、第 ', strftime('%j'), ' 天',"\n";
echo "详细时间:\n", strftime('%b %d, %Y %A %n%I:%M:%S %p'),"\n";
/* 输出:
现在是21世纪 2019 年08月26 日
正是今年的第 35 周、第 238 天
详细时间:
Aug 26, 2019 Monday
02:39:47 PM
*/

5. 延展阅读

  • setlocale():设置地区信息
  • mktime():返回指定的本地时间的 UNIX 时间戳表示
  • strptime():解析使用strftime()函数生成的日期时间,返回一个时间信息数组
  • gmstrftime():根据区域设置格式化格林威治标准时间