1.7PHP基础-内置函数-时间⽇期PHP ⽇期时间函数
函数名称 描述
checkdate 验证⼀个格⾥⾼⾥⽇期
date_add 给⼀个 DateTime 对象增加⼀定量的天,⽉,年,⼩时,分钟 以及秒。
date_create_from_format 根据给定的格式解析⽇期时间字符串
date_create_immutable 返回新的DateTimeImmutable对象
date_create 返回⼀个新的 DateTime 对象
date_date_set 设置 DateTime 对象的⽇期
date_default_timezone_get 取得⼀个脚本中所有⽇期时间函数所使⽤的默认时区
date_default_timezone_set 设定⽤于⼀个脚本中所有⽇期时间函数的默认时区
date_diff 返回两个DateTime对象之间的差异
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 对⼀个 DateTime 对象减去⼀定量的 ⽇、⽉、年、⼩时、分钟和秒。
date_sun_info 返回⼀个数组,其中包含有关⽇落/⽇出和黄昏开始/结束的信息
unix时间戳转换日期格式
date_sunrise 返回给定的⽇期与地点的⽇出时间
date_sunset 返回给定的⽇期与地点的⽇落时间
date_time_set 设置 DateTime 对象的时间
date_timestamp_get 获取Unix时间戳
date_timestamp_set 以 Unix 时间戳的⽅式设置 DateTime 对象
date_timezone_get 返回相对于给定DateTime的时区
date_timezone_set 设置 DateTime 对象的时区
date 格式化⼀个本地时间/⽇期
getdate 取得⽇期/时间信息
gettimeofday 取得当前时间
gmdate 格式化⼀个 GMT/UTC ⽇期/时间
gmmktime 取得 GMT ⽇期的 UNIX 时间戳
gmstrftime 根据区域设置格式化 GMT/UTC 时间/⽇期
idate 将本地时间⽇期格式化为整数
localtime 取得本地时间
microtime 返回当前 Unix 时间戳和微秒数
mktime 取得⼀个⽇期的 Unix 时间戳
strftime 根据区域设置格式化本地时间/⽇期
strptime 解析由 strftime ⽣成的⽇期/时间
strtotime 将任何字符串的⽇期时间描述解析为 Unix 时间戳
time 返回当前的 Unix 时间戳
timezone_abbreviations_list 返回⼀个包含 dst (夏令时),时差和时区信息的关联数组。
timezone_identifiers_list 返回⼀个包含了所有时区标⽰符的索引数组。
timezone_location_get 返回与时区相关的定位信息。
timezone_name_from_abbr 从缩写返回时区名称
timezone_name_get 返回时区名称。
timezone_offset_get 返回相对于 GMT 的时差。
timezone_open 创建新的DateTimeZone对象
timezone_transitions_get 返回时区的所有转换
timezone_version_get 获取timezonedb的版本
时间函数应⽤实例
时区设置
1.在php.ini中到date.timezone,将它的值改成 Asia/Shanghai,即 date.timezone = Asia/Shanghai(将当前时区设置为亚洲上海时区)
2.在程序开始的地⽅添加 date_default_timezone_set('Asia/Shanghai');即可,当然对于中国的时区,我们也可以使⽤
date_default_timezone_set('PRC');来设置
date_default_timezone_get - 取得⼀个脚本中所有⽇期时间函数所使⽤的默认时区
date() 格式为:date($format, $timestamp),format为格式、timestamp为时间戳(可选)。
echo date('Y-m-d H:i:s');输出结果:2014-12-16 23:00:00
time() 返回当前时间的 Unix 时间戳,没有参数。
time();输出结果:1418664250(返回的结果即当前的时间戳)
strtotime($time, $now) 将格式化的⽇期时间或任何英⽂⽂本的⽇期时间描述解析为 Unix 时间戳。$time 为必填,规定要解析的时间字符串;$now ⽤来计算返回值的时间戳,如果省略该参数,则使⽤当前时间。
echo strtotime('2014-12-16'); 输出结果:1418688000,作⽤其实是把2014-12-16 00:00:00转化为 UNIX 时间戳
strtotime()还有个很强⼤的⽤法,参数可加⼊对于数字的操作、年⽉⽇周英⽂字符,⽰例如下:
echo date('Y-m-d H:i:s',strtotime('+1 day'));输出结果:2014-12-17 23:30:33(输出明天此时的时间)
echo date('Y-m-d H:i:s',strtotime('-1 day'));输出结果:2014-12-15 23:30:33(昨天此时的时间)
echo date('Y-m-d H:i:s',strtotime('+1 week'));输出结果:2014-12-22 23:30:33(获取下个星期此时的时间)
echo date('Y-m-d H:i:s',strtotime('next Thursday'));输出结果:2014-12-18 00:00:00(获取下个星期四凌晨的时间)
echo date('Y-m-d H:i:s',strtotime('last Thursday'));输出结果:2014-12-11 00:00:00(获取上个星期四凌晨的时间)
date_parse - 返回关联数组,其中包含有关给定⽇期的详细信息
print_r(date_parse("2019-12-12 10:00:00.5"));
microtime - 返回当前 Unix 时间戳和微秒数
//php获取当前时间的毫秒数
function getMillisecond(){
list($s1,$s2)=explode(' ',microtime());
return (float)sprintf('%.0f',(floatval($s1)+floatval($s2))*1000);
}
#时间戳
echo time();//返回⼀个以秒为单位的时间戳:1467968841
echo microtime(true);//返回⼀个以毫秒为单位的时间戳:1467968841.4155
echo microtime();//返回带毫秒和秒的时间戳:0.41553000 1467968841,前⾯是毫秒⼩数,后⾯是秒数
#计算⽇期中相差的天数
$start_date = "2018-05-25";
$end_date = "2017-05-23";
$start_time = strtotime($start_date);
$end_time = strtotime($end_date);
$days = abs(($start_time - $end_time) / 86400);
echo "时间差是:$days";
$start_date = "2018-05-25";
$end_date = "2017-05-23";
$datetime_start = new DateTime($start_date);
$datetime_end = new DateTime($end_date);
$days = $datetime_start->diff($datetime_end)->days;
echo "时间差是:$days";
/
/计算时间差返回天数(参数时间戳)
function getTimeDiff($current_time, $last_time)
{
$current_time_str = strtotime(date("Ymd", $current_time));
$last_time_str = strtotime(date("Ymd", $last_time));
if($current_time_str >= $last_time_str){
$timediff = $current_time_str - $last_time_str;
$days = intval($timediff/86400);
} else {
$days = 0;
}
return $days;
}
/**
*获得开始⽉份到结束⽉份之间的所有⽉份
**/
function getMonthsInTime($start_month = '',$end_month = ''){
$end_month = $end_month = '' ?  date('Y-m') : $end_month;
$start_month = $start_month = '' ?  date('Y-m', strtotime('-1 year')) : $start_month;    $time_arr = [];
$begin = new DateTime($start_month);
$end = new DateTime($end_month);
$end = $end->modify('+1 month');
$interval = new DateInterval('P1M');
$daterange = new DatePeriod($begin, $interval ,$end);
foreach($daterange as $date){
$time_arr[] = $date->format("Y-m");
}
return $time_arr;
}
//获取⽉份的每天⽇期
function getEverydayInMonth($month_time)
{
if(!$month_time)
{
$month_time = date('Y-m');//默认当⽉
}
$start_time = strtotime($month_time);// ⽉初时间戳
$days = date('t', strtotime($month_time));
$date = [];
for($i = 1;$i<=$days;$i++)
{
$date[] = date('Y-m-d',$start_time+(($i-1) * 86400));
}
return $date;
}
//获取前7天的所有⽇期
function getEveryday($day_number = 7)
{
$seven_day = date("Y-m-d", strtotime("-" . $day_number. " day"));
$stimestamp = strtotime($seven_day);
$etimestamp = strtotime(date("Y-m-d", time()));
// 计算⽇期段内有多少天
$days = ($etimestamp - $stimestamp) / 86400 + 1;
// 保存每天⽇期
$date = array();
for ($i = 0; $i < $days; $i++) {
$date[] = date('Ymd', $stimestamp + (86400 * $i));
}
return $date;
}

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。