一、PHP日期操作常用函数:
date():把时间戳格式化为更易读的日期和时间
time(): 获取当前 Unix 时间戳
strtotime(): 将表示时间和日期的字符串转化为相应的时间戳
二、date函数介绍
语法格式
string date ( string $format [, int $timestamp ] )
format : 必需,规定输出日期字符串的格式
timestamp : 可选,规定整数的 Unix 时间戳。默认是当前的本地时间 time()
返回值是格式化后的时间字符串
// 假定今天是:2019年1月21日
$today = date("Y-m-d H:i:s"); // 2019-01-21 18:52:18 (MySQL DATETIME 格式)
参数解析
年
Y:四位,2019
y : 二位,19
L : 如果是闰年为 1,否则为 0
月
M : 英文月份(三位:Mar)
F : 英文月份全称
m : 月份,补零,01
n : 月份,不补零;从"1"至"12"
t : 指定月份的天数,从"28"至"31"
周
l : 周几,英文全名,如:"Friday",小写的L
W : ISO-8601 格式年份中的第几周,每周从星期一开始,两位数字 01
N : 数字型的星期几,1(表示星期一)到 7(表示星期天)
w : 数字型的星期几,从"0(星期天)"至"6(星期六)"
D : 周几(三位:Thu)
日
d : 月份中的第几天,补零,01
j : 月份中的第几天,不补零;从"1"至"31"
S: 日期后缀,st,nd,rd 或者 th。可以和 j 一起用
z:一年中的第几天;从"1"至"366"
时
H : 24小时,补零
h : 12小时,补零
G : 24小时制,不补零;从"0"至"23"
g : 12小时制,不补零;从"1"至"12"
分
i : 分钟,两位
秒
s : 秒;从"00"至"59"
S : 英文序数"th"两个英文字母,如:sS:"21th"
U : 总秒数,时间戳
上下午
A : "AM"或是"PM"
a : "am"或是"pm"
其他
T : 大写T表示服务器的时间区域设置 , 如:UTC
I : 大写I表示判断当前是否为夏令时,为真返回1,否则为0
c : ISO8601日期,日期格式为YYYY-MM-DD,用字母T来间隔日期和时间,时间格式为HH:MM:SS,时区使用格林威治标准时间(GMT)的偏差来表示。
2019-03-28T18:20:30+08:00
r : RFC822日期。
Thu, 28 Mar 2019 18:20:48 +0800
实际应用
获取本周最早时间戳
mktime(0, 0, 0, date('m'), date('d') - date('w') +1 , date('Y'));
获取本周最晚时间戳
mktime(23, 59, 59, date('m'), date('d') - date('w') + 7, date('Y'));
获取当天0点时间戳
strtotime(date('Y-m-d'))
获取月初时间戳
mktime(0, 0, 0, date('m'), 1, date('Y'));
获取月末时间戳
mktime(23, 59, 59, date('m'), date('t'), date('Y'));
计算最后操作时间
function word_time($time) {
$time = (int) substr($time, 0, 10);
$int = time() - $time; $str = '';
if ($int <= 3600*24*7){
$str = '一周内';
}elseif ($int < 3600*24*30){
$str = '一月内';
}else{
$str = '一月前';
}
return $str;
}
三、strtotime函数介绍
语法格式
int strtotime ( string $time [, int $now = time() ] )
time :日期/时间字符串
now : 用来计算返回值的时间戳
本函数预期接受一个包含美国英语日期格式的字符串并尝试将其解析为 Unix 时间戳,其值相对于 now 参数给出的时间,如果没有提供此参数则用系统当前时间
成功则返回时间戳,否则返回 FALSE,在 PHP 5.1.0 之前本函数在失败时返回 -1
echo strtotime("now"); // 现在时间戳
echo strtotime("21 January 2019"); // 2019年1月21日时间戳
echo strtotime("+1 day"); // 距离现在一天后的时间戳
四、microtime函数介绍
time() 获取当前Unix秒数时间戳,还可以使用microtime() 获取当前 Unix 时间戳和微秒数,这个函数经常用来计算脚本运行的耗时
语法格式
mixed microtime ([ bool $get_as_float ] )
如果调用时不带可选参数,本函数以 "msec sec" 的格式返回一个字符串,其中 sec 是自 Unix 纪元(0:00:00 January 1, 1970 GMT)起到现在的秒数,msec 是微秒部分。字符串的两部分都是以秒为单位返回的。
带参数:1553784219.6699 不带参数:0.15163200 1553784358