教你如何使用PHP中的date函数格式化时间戳。
在PHP中,使用date()函数对时间进行格式化非常方便。date()几乎可以将任何时间格式转换为需要的时间格式。它需要两个参数, 个参数是需要的时间格式,第二个参数是需要格式化的时间戳,若未输入第二个参数,则默认使用当前时间。
对于时间戳的处理,PHP内部使用Unix时间戳,即从1970年1月1日00:00:00(UTC/GMT的午夜)到当前时间所经过的秒数。例如:1546300800代表的是GMT(格林威治标准时间)的2019年1月1日0时0分0秒。
下面是一些常用的时间格式化字符:
字符 | 描述 | 示例
---|---|---
d | 月份里的天数,两位数字且有前导零 | 01至31
D | 星期几的缩写版 | Mon至Sun
j | 月份里的天数,没有前导零 | 1至31
l(小写L)| 星期几的全拼 | Monday至Sunday
m | 数字表示的月份,带前导零 | 01至12
M | 月份的缩写版 | Jan至Dec
n | 数字表示的月份,没有前导零 | 1至12
S | 月份中的英文序数后缀,两个字符(st、nd、rd或th) | st、nd、rd或th
w | 数字表示的星期几,其中0为星期日 | 0至6
F | 月份的全拼 | January至December
Y | 年份,4位数字 | 例如:"2021"
y | 年份,2位数字 | 例如:"21"
例如下面这行代码:
echo date("F j, Y, g:i a", 1546300800);
输出的结果是:
January 1, 2019, 12:00 am
其中,F代表月份的全拼,j代表月份里的天数,Y代表四位数的年份,g代表12小时制小时数(无前导零),i代表分钟数,a代表小写字母的上午或下午。
还有一些修改时间格式的函数可以使用:
函数名 | 描述
----|---------
strtotime() | 将人可读的日期时间描述解析为Unix时间戳
time() | 返回当前Unix时间戳
mktime() | 返回Unix时间戳 for date
strtotime()函数常用于将人可读的日期时间描述(例如“now”、“yesterday”、“last Monday”、“next Saturday”等)解析为Unix时间戳。例如:
$timestamp = strtotime("next Monday");
echo date("Y-m-d", $timestamp);
输出的结果是:
2021-05-17
其中,next Monday表示下一个星期一。
time()函数返回当前的Unix时间戳,例如:
echo time();
输出的结果是当前Unix时间戳,例如:
1621149824
mktime()函数可以将年、月、日、时、分、秒等信息转换为Unix时间戳。例如:
$timestamp = mktime(8, 30, 0, 5, 18, 2021);
echo date("Y-m-d H:i:s", $timestamp);
输出的结果是:
2021-05-18 08:30:00
其中,8代表小时数,30代表分钟数,0代表秒数,5代表月份,18代表天数,2021代表年份。
综上所述,date()函数是对时间格式化非常方便的方式之一。结合strtotime()函数和mktime()函数,我们可以精确地控制时间的输出格式和时间戳的计算。
