入门 - 时间处理

  • 作者:KK

  • 发表日期:2017.1.6


  • 阅读本文章前,请确保你已经知道什么是Unix时间戳

我们经常会使用time函数获取时间戳,用date函数获取时间的自然数字日期表示法,用strtotime函数将自然日期转换成时间戳数字

time函数返回时间戳

只写一句测试代码:echo time();然后每次运行PHP代码你会发现它输出的数字在跟着时间一秒一秒地增加,因为它就代表了1970年到今天所过去了的秒数


date函数返回格式化后的日期

请直接复制以下代码查看对应的输出

print_r([
	'现在的年份' => date('Y'),
	
	'现在的月份' => date('m'),
	
	'现在的日期' => date('d'),
	
	'现在的完整时间' => date('Y-m-d H:i:s'),
	
	'现在的完整时间2' => date('Y-n-j H:i:s'),
	
	'今天的日期' => date('Y-n-j'),
	
	'其实只是将字母部分换成时间,间隔符号什么的可以自定义' => date('现在是Y年m月d H时i分s秒'),
	
	'再来一个日期格式' => date('Y/m/d'),
	
	'本周是今年的第几周' => date('W'),
	
	'今天是一周里的第几天' => date('N'),
]);

以上代码我的输出结果大概如下:

Array
(
    [现在的年份=> 2017
    [现在的月份=> 01
    [现在的日期=> 06
    [现在的完整时间=> 2017-01-06 16:07:18
    [现在的完整时间2=> 2017-1-6 16:07:18
    [今天的日期=> 2017-1-6
    [其实只是将字母部分换成时间=> 现在是2017年01月06年01月0616时07分18秒=> 2017/01/06
    [本周是今年的第几周今年的第几周的第几周=> 01
    [今天是一周里的第几天=> 5   //就是星期五
)

date还接受第2个可选参数的输入,这个参数是一个时间戳,它会根据这个时间戳去进行日期格式化:

$time = strtotime('2016-12-31 20:02');
print_r([
	'2016-12-31' => date('Y-m-d', $time),
	
	'2017-1-1 20:02' => date('Y-m-d', $time + 86400), //增加1天的秒数
	
	'2017-1-1' => date('Y-m-d', $time + 86400),
]);

strtotime把日期字符串转换成时间戳

print_r([
	'示例1' => strtotime('2017-1-1 00:00:00'),
	
	'示例2' => strtotime('1970-1-1 01:00:00'), // 3600秒,距离1970年1月1日凌晨过去了1小时
	
	'1天后(明天)的时间戳' => strtotime('+1day'),
	
	'后天的日期' => date('Y-m-d', strtotime('+2day')),
	
	'3周后的时间戳' => strtotime('+3week'),
	
	'3个月后的时间戳' => strtotime('+3month'),
	
	'3年前的时间戳' => strtotime('-3year'),
]);