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