时间函数在日常的开发中是经常用到的,PHP中有很多已经封装好的原生函数,因为开发人员的不熟悉而在开发过程中经常性重复的造轮子,这是一种很不好的行为习惯。
在掌握PHP时间相关函数之前,我们先来做一下 运行时配置
PHP时间日期函数运行时配置 (php.ini)
- date.timezone
- 默认时区(所有的 Date/Time 函数使用该选项)
- 常用值: Asia/Shanghai
- PHP所支持的时区列表
日期检车相关的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
- 返回时区数据库的版本