时间函数在日常的开发中是经常用到的,PHP中有很多已经封装好的原生函数,因为开发人员的不熟悉而在开发过程中经常性重复的造轮子,这是一种很不好的行为习惯。
在掌握PHP时间相关函数之前,我们先来做一下 运行时配置
PHP时间日期函数运行时配置 (php.ini)
date.timezone
默认时区(所有的 Date/Time 函数使用该选项)
常用值: Asia/Shanghai
日期检车相关的PHP函数
checkdate
bool checkdate ( int $month , int $day , int $year )
校验是否是一个合法的日期
日期的新增和修改相关的函数
date_add
DateTime date_add ( DateTime $object , DateInterval $interval )
添加日、月、年、时、分和秒到日期
date_create
DateTime date_create ([ string $time = "now" [, DateTimeZone $timezone = NULL ]] )
返回新的 DateTime 对象
$today=date_create(date('Y-m-d'));
date_add($today,date_interval_create_from_date_string("30 days"));
echo date_format($today,"Y-m-d");
echo date('Y-m-d', strtotime('+30 days'));
日期时间的转换函数
date_create_from_format
返回一个根据指定格式进行格式化的新的 DateTime 对象
DateTime date_create_from_format ( string $format , string $time [, DateTimeZone $timezone ] )
用途: 根据输入的值进行格式化,再通过 date_format 函数进行格式转换,而不是转换成 strtotime 后再进行 date 转换
相关配置注意事项
date() 包下列错误的处理办法
PHP Warning: date() [function.date]: It is not safe to rely on the system's timezone settings. You are required to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected 'UTC' for '8.0/no DST' instead in
上面的解决方法有:
在页头使用date_default_timezone_set()设置 date_default_timezone_set('PRC'); //东八时区 echo date('Y-m-d H:i:s');
在页头使用 ini_set('date.timezone','Asia/Shanghai');
修改 php.ini。打开php.ini查找date.timezone 去掉前面的分号修改成为:date.timezone =PRC或Asia/Shanghai
date_date_set
date_date_set(object,year,month,day)
设置新日期
object 必需。规定由 date_create() 返回的 DateTime 对象。
year 必需。规定日期中的年。
month 必需。规定日期中的月。
day 必需。规定日期中的日。
date_default_timezone_get
返回脚本中所有日期/时间函数使用的默认时区
date_default_timezone_set
设置由所有的 Date/Time 函数使用的默认时区
date_diff
返回两个 DateTime 对象间的差值。
$date1=date_create("1984-01-28");
$date2=date_create("1980-10-15");
$diff=date_diff($date1,$date2);
date_format
根据指定格式进行格式化的日期
date_get_last_errors
返回日期字符串中的警告/错误。
date_interval_create_from_date_string
从字符串的相关部分建立 DateInterval
date_interval_format
格式化时间间隔
date_isodate_set
设置 ISO 日期
date_modify
修改时间戳
date_offset_get
返回时区偏移
date_parse_from_format
根据指定的格式返回带有关于指定日期的详细信息的关联数组
date_parse
返回带有关于指定日期的详细信息的关联数组
date_sub
从指定日期减去日、月、年、时、分和秒
date_sun_info
返回包含有关指定日期与地点的日出/日落和黄昏开始/黄昏结束的信息的数组
date_sunrise
返回指定日期与位置的日出时间
date_sunset
返回指定日期与位置的日落时间
date_time_set
设置时间
date_timestamp_get
返回 Unix 时间戳
date_timestamp_set
设置基于 Unix 时间戳的日期和时间
date_timezone_get
返回给定 DateTime 对象的时区
date_timezone_set
设置 DateTime 对象的时区
date
格式化本地日期和时间
getdate
返回某个时间戳或者当前本地的日期/时间的日期/时间信息
gettimeofday
返回当前时间
gmdate
格式化 GMT/UTC 日期和时间
gmstrftime
根据区域设置对 GMT/UTC 日期和时间进行格式化
gmmktime
返回 GMT 日期的 UNIX 时间戳
idate
将本地时间/日期格式化为整数
localtime
返回本地时间
microtime
返回当前时间的微秒数
mktime
返回日期的 Unix 时间戳
strftime
根据区域设置对本地时间/日期进行格式化
strptime
解析由 strftime() 生成的时间/日期
time
返回当前时间的 Unix 时间戳
timezone_abbreviations_list
返回包含夏令时、偏移量和时区名称的关联数组
timezone_identifiers_list
返回带有所有时区标识符的索引数组
imezone_location_get
返回指定时区的位置信息
timezone_name_from_abbr
根据时区缩略语返回时区名称
timezone_name_get
返回时区的名称
timezone_offset_get
返回相对于 GMT 的时区偏移
timezone_open
创建新的 DateTimeZone 对象
timezone_version_get
返回时区数据库的版本