PHP日期时间格式化函数
PHP是一种广泛使用的服务器端脚本语言,可以在网页和Web应用程序中使用。在PHP开发过程中,日期时间格式化是非常常见的需求之一。本文将介绍PHP中常用的日期时间格式化函数。
1. date()函数
date()函数是PHP中最简单且最常用的日期时间格式化函数,它可以输出日期和时间的各种格式。
语法:
string date (string $format [, int $timestamp ])
其中,$format参数指定要输出的日期时间格式,$timestamp参数是可选的,指定要格式化的时间戳。如果省略,则默认使用当前时间。
示例:
echo date('Y-m-d H:i:s'); //输出当前日期和时间,格式为'yyyy-mm-dd hh:ii:ss'
echo date('l, F jS, Y'); //输出当前日期的全称、月份和日期
echo date('h:i A', strtotime('6pm + 12hours')); //输出指定时间的12小时制格式
常用的日期时间格式:
格式 | 说明
---|---
Y | 年份,四位数字
y | 年份,两位数字
m | 月份,两位数字
n | 月份,不含前导零
M | 月份,英文缩写
F | 月份,英文全称
d | 日期,两位数字
j | 日期,不含前导零
D | 星期几,英文缩写
l | 星期几,英文全称
H | 小时,24小时制
h | 小时,12小时制
i | 分钟,两位数字
s | 秒数,两位数字
A | 上午或下午,大写字母
2. strftime()函数
strftime()函数与date()函数类似,也是用于格式化日期和时间的函数,不同的是它可以输出本地化的日期和时间格式。
语法:
string strftime (string $format [, int $timestamp = time() ])
其中,$format参数指定要输出的日期时间格式,$timestamp参数是可选的,指定要格式化的时间戳。如果省略,则默认使用当前时间。
示例:
setlocale(LC_TIME, 'en_US.utf8'); //设置本地化语言为英文
echo strftime('%A, %B %d %Y'); //输出当前日期的英文全称和日期
setlocale(LC_TIME, 'zh_CN.utf8'); //设置本地化语言为中文
echo strftime('%Y年%m月%d日 %H时%M分%S秒'); //输出当前日期和时间的中文格式
常用的指令符:
指令符 | 说明
---|---
%A | 星期几,完整的文本格式
%a | 星期几的缩写
%B | 月份,完整的文本格式
%b | 月份的缩写
%d | 月份中的第几天,两位数字表示
%e | 同%d,但不含前导零
%H | 24小时制下的小时数,两位数字表示
%I | 12小时制下的小时数,两位数字表示
%m | 数字表示的月份,两位数字表示
%M | 分钟数,两位数字表示
%p | 上午或下午的标识符
%S | 秒数,两位数字表示
%y | 两位数字表示的年份
%Y | 四位数字表示的年份
3. DateTime类
DateTime类是PHP5中的一个面向对象的日期时间类,它提供了很多有用的方法,使日期时间格式化更加灵活。
语法:
DateTime::__construct([ string $time = "now" [, DateTimeZone $timezone = null ]]) DateTime::format(string $format)
其中,__construct()方法是用于创建一个DateTime对象,$time参数表示要格式化的时间,可以是一个日期时间字符串或时间戳,默认为当前时间,$timezone参数是可选的,表示时区,默认为null,表示使用服务器时区。format()方法用于格式化DateTime对象。
示例:
$date = new DateTime(); //创建一个当前日期时间的DateTime对象
echo $date->format('Y-m-d H:i:s'); //输出日期时间,格式为'yyyy-mm-dd hh:ii:ss'
$date = new DateTime('2022-01-01 00:00:00', new DateTimeZone('Asia/Shanghai')); //创建一个指定日期时间和时区的DateTime对象
echo $date->format('Y年m月d日 H时i分s秒'); //输出日期时间,格式为'yyyy年mm月dd日 hh时ii分ss秒'
常用的DateTime方法:
方法 | 说明
---|---
add() | 增加一个时间间隔
sub() | 减少一个时间间隔
diff() | 计算两个日期间的时间差
getTimeStamp() | 返回时间戳
getOffset() | 返回时区偏移量
getTimezone() | 返回时区对象
setTimezone() | 设置时区对象
4. strtotime()函数
strtotime()函数是用于将文本时间转换为时间戳的函数。
语法:
int strtotime(string $time [, int $now = time() ])
其中,$time参数表示要转换的文本时间,$now参数是可选的,表示现在的时间戳,默认为当前时间戳。
示例:
echo strtotime('2022-01-01 00:00:00'); //输出指定时间的时间戳
echo strtotime('+1 day'); //输出明天此时的时间戳
echo strtotime('-2 hours 30 minutes'); //输出两个半小时之前的时间戳
注意事项:
- strtotime()函数默认解析时间字符串的规则是:尝试将时间字符串解析成日期,然后再将日期解析成时间。因此,对于某些格式的时间字符串可能会解析失败。
- strtotime()函数对年份的解析范围是1970至2038年。
总结
以上就是PHP常用的日期时间格式化函数。在实际开发中,我们可以根据需求选择合适的函数和格式来处理日期时间。
- 若只需要简单的日期时间格式化,则可以使用date()函数或strftime()函数。
- 若需要进行更加灵活的日期时间操作,则可以使用DateTime类。
- 若需要将文本时间转换成时间戳,则可以使用strtotime()函数。
无论使用哪种函数,我们都应该注意选择合适的日期时间格式,并在需要时设置时区来避免出现时间差错。
