1、时区的设置
① date_default_timezone_set('PRC');// "Asia/Shang"、"Asia/Chongqing"、"Etc/GMT-8"或 PRC 等中的一个; ② 修改php.ini,date.timezone = PRC 开启
2、返回当前Unix时间戳的微妙数:
microtime() //返回当前 Unix 时间戳的微秒数 microtime(true) //返回一个浮点数 1s=1000ms(毫秒) 1s=1000000us(微秒)
3、set_time_limit(秒数);
规定从该句运行时起程序必须在指定秒数内运行结束, 超时则程序出错退出.
4、函数针对指定的年份和日历,返回一个月中的天数:
var_dump( cal_days_in_month(CAL_GREGORIAN,06,2017) ); var_dump( cal_days_in_month(CAL_GREGORIAN,6,2017) ); var_dump( date('t', strtotime('2017-06')) );
5、php判断日期格式是否正确
checkdate(月,日,年); // 用于验证格利高里日期(Gregorian date),返回逻辑真或逻辑假. 如果: [1]年在1900和32767之间(包括1900与32767); [2]月在1到12之间; [3]日在该月的允许日数范围内(考虑了闰年); 则返回逻辑真. 例: checkdate(month,day,year); var_dump(checkdate(2,29,2003)); //false var_dump(checkdate(2,29,2004)); //true //封装的一个函数,判断时间是否正确 var_dump( is_date("2003-02-28 23:59:60")); //is_date()时间格式 如:2003-02-28 23:59:60 function is_date($date){ if($date == date('Y-m-d H:i:s',strtotime($date))){ return true; }else{ return false; } } //验证日期是否合理 function check_datetime($datetime) { if (date('Y-m-d H:i:s', strtotime($datetime)) === $datetime) { return true; } else { return false; } }
6、获取指定日期
strtotime() 函数将任何英文文本的日期或时间描述解析为 Unix 时间戳(自 January 1 1970 00:00:00 GMT 起的秒数)
mktime(hour,minute,second,month,day,year); 返回一个日期的 UNIX 时间戳
获取今天凌晨的时间戳:
mktime(0, 0, 0)
获取当前时间戳:
time()
获取今天 00:30:00时间戳:
mktime(0,30,0,date('m'),date('d'),date('Y'))
获取指定时间的时间戳:
$tm = strtotime("2017-12-07");
echo mktime(0,30,0,date('m',$tm),date('d',$tm),date('Y', $tm))
echo date('Y-m-d H:i:s',strtotime('now'));//当前时间戳 2017-01-09 21:04:11
echo date('Y-m-d H:i:s',strtotime('+1 second'));//当前时间戳+1秒 2017-01-09 21:04:12
echo date('Y-m-d H:i:s',strtotime('+1 minute'));//当前时间戳+1分 2017-01-09 21:05:11
echo date('Y-m-d H:i:s',strtotime('+1 hour'));//当前时间戳+1小时 2017-01-09 22:04:11
echo date('Y-m-d H:i:s',strtotime('+1 day'));//当前时间戳+1天 2017-01-10 21:04:11
echo date('Y-m-d H:i:s',strtotime('+1 week'));//当前时间戳+1周 2017-01-16 21:04:11
echo date('Y-m-d H:i:s',strtotime('+1 month'));//当前时间戳+1月 2017-02-09 21:04:11
echo date('Y-m-d H:i:s',strtotime('+1 year'));//当前时间戳+1年 2018-01-09 21:04:11
echo date('Y-m-d H:i:s',strtotime('+12year 12month 12day 12hour 12minute 12second'));
//当前时间戳+12年,12月,12天,12小时,12分,12秒 2030-01-22 09:16:23
用PHP打印出昨天、明天的时间:
date("Y-m-d ",strtotime(" -1 day"));//昨天
date("Y-m-d ",strtotime(" +1 day")); //明天
获取指定下星期几的时间戳:
echo date('Y-m-d H:i:s',strtotime('next thursday'))."<br>";
echo date('Y-m-d H:i:s',strtotime('last thursday'));
//获取当月的第一天和最后一天
$BeginDate= date('Y-m-01', strtotime(date("Y-m-d"))); //获取当月第一天
$EndDate = date('Y-m-d', strtotime("$BeginDate +1 month -1 day")); //获取当月最后一天
$startTime= strtotime('-0 month', strtotime(date('Y-m-01 00:00:00')));
$endTime = strtotime('+1 month', $startTime) - 1;
$startTime = strtotime(date('Y-m-01')); //当月第一天的时间戳
$endTime = strtotime(date('Y-m-t 23:59:59')); //当月最后一天的时间戳
获取今日开始时间戳和结束时间戳
$beginToday= mktime(0,0,0,date('m'),date('d'), date('Y'));
$endToday = mktime(0,0,0,date('m'),date('d')+1,date('Y'))-1;
获取昨日起始时间戳和结束时间戳
$beginYesterday= mktime(0,0,0,date('m'),date('d')-1,date('Y'));
$endYesterday = mktime(0,0,0,date('m'),date('d'), date('Y'))-1;
获取上周起始时间戳和结束时间戳
$beginLastweek = mktime( 0, 0, 0,date('m'),date('d')-date('w')+1-7,date('Y'));
$endLastweek = mktime(23,59,59,date('m'),date('d')-date('w')+7-7,date('Y'));
获取本月起始时间戳和结束时间戳
$beginThismonth= mktime(0, 0, 0,date('m'), 1,date('Y'));
$endThismonth = mktime(23,59,59,date('m'),date('t'),date('Y'));
获取上个月第一天及最后一天:
date('Y-m-01', strtotime('-1 month'));
date('Y-m-t', strtotime('-1 month'));
指定日期加一个月 php指定时间戳加1月:
echo date("Y-m-d H:i:s",strtotime("+2 months", strtotime("2016-09-01")));
echo date("Ym", mktime(0,0,0,date('m', time())-2,1,date("Y", time())));
//获取当月、上个月 指定的哪一天
$startTime = strtotime( date('Y-m-25 00:00:00', strtotime('-1 month')) );//上个月25号
$endTime = strtotime( date('Y-m-25 23:59:59') );//本月25号
获取指定日期的前一天
$date= date('Y-m-d', strtotime('-1 day', strtotime("2015-08-09")));
获取当前日期的 一周后的时间
$today = date('Y-m-d');
$thedays = date("Y-m-d",strtotime("+1 week",strtotime($today)));
//获取指定时间戳的当月、上个月 指定的哪一天
$startTime = strtotime( date('Y-m-25 00:00:00', strtotime("-1month",strtotime("2017-11-02"))) );//指定时间戳的上个月25号
$endTime = strtotime( date('Y-m-25 23:59:59',strtotime("2017-11-02")) );//指定时间戳月份的25号
获取指定日期的上一个月:
$a= "2016-01";
$date= date('Y-m', strtotime('-1 month', strtotime($a)));
获取最近的三个月:
$month = date('Ym');
$month_a = date('Ym',mktime(0,0,0,date('m')-1,1,date('Y')));
$month_b = date('Ym',mktime(0,0,0,date('m')-2,1,date('Y')));
$anchorMonthInfo = array( $month,$month_a,$month_b );
/** * 返回 $tm 时间对应的周 * 周格式 Yw 哪一年的第几周 */ function DateWeek($tm) { $w = date('w', $tm) ==0 ? 7 : date('w', $tm); if(date('W', $tm) >= 52) // 用周一 { $date = $tm -($w-1)*24*3600 ; } else // 用周日 { $date = $tm + (7-$w)*24*3600; } return date("YW", $date); } //封装获取指定时间的当月开始时间 function makeMonthTime($monthNum, $timeNow = 0) { if (! $timeNow) { $timeNow = time(); } $rettm = mktime(0,0,0, date('m', $timeNow)+ $monthNum, 1, date('Y', $timeNow)); return $rettm; } $time1 = makeMonthTime(-1, time()); //汇总上个月开始数据 $time2 = makeMonthTime(0, time()); //汇总当月结束数据 var_dump(date('Y-m-d H:i:s',$time1)); //string '2017-10-01 00:00:00' (length=19) var_dump(date('Y-m-d H:i:s',$time2)); //string '2017-11-01 00:00:00' (length=19) //获取下一个3天,排除特定日期,可用在有特殊时间限制的时间上面;如送货 $restDay = array( // 中秋 '2015-09-27', // 国庆 '2015-10-01', '2015-10-02', '2015-10-03', '2015-10-04' ); $day = date("Y-m-d"); $days = array(); do { // 如果当天是休息,不送货 if (! in_array($day,$restDay)) { $days[] = $day; } // 向后一天 $day = date('Y-m-d', strtotime('+1 day', strtotime($day))); } while (count($days) < 3); var_dump($days); 第二种方式 $day=date('Y-m-d',time()); $dates=array(); $restDay = array( // 国庆 '2015-12-07', '2017-11-01', ); for ($i=1;count($dates)<=2;$i++){ $date =date('Y-m-d', strtotime('+' . $i . ' day', strtotime($day))); array_push($dates, $date); foreach ($dates as $key => $value) { foreach ($restDay as $k => $v) { //查找所有需过滤的日期 if ($value==$v) { array_splice($dates,$key,1); //依次过滤掉不操作的日期 } } } } var_dump($dates); 设定一个开始日期,循环遍历30天以后的日期 $datas=array(); $starttime ='2015-11-05'; for($i = 0;$i<30;$i++){ $datas[$i]['day'] = $starttime; $starttime =date("Y-m-d",strtotime($starttime)+24*3600); } var_dump($datas);
参数为指定年份指定周,获取该指定周的 开始时间结束时间戳
function getTimestampByYearAndWeek($year, $week, $startOfWeek = 'sun') { $timestamp = strtotime("{$year}-W{$week}-1", strtotime("{$year}-01-01")); if ($startOfWeek == 'sun') { $timestamp -= 86400; } $endOfWeek = $timestamp + (7 * 86400); return array($timestamp, $endOfWeek); } $year = '2023'; $week = '20'; $startOfWeek = 'sun'; $startTimestamp = getTimestampByYearAndWeek($year, $week, $startOfWeek)[0]; $endTimestamp = getTimestampByYearAndWeek($year, $week, $startOfWeek)[1]; echo "开始时间戳: {$startTimestamp}\n";echo "结束时间戳: {$endTimestamp}\n";
本文为崔凯原创文章,转载无需和我联系,但请注明来自冷暖自知一抹茶ckhttp://www.cksite.cn