公共方法整合(三)时间相关方法
同样是方法整合类型
不过本篇主要存储的是一些关于时间操作类型的公共方法
方法目录:
- 获取两个时间之间相差的年、月、日、时、分、秒及总天数
- 根据时间获取对应当年多少周
- 计算当年有多少周
- 获取指定周的开始时间与结束时间
- 根据时间戳获取是几秒钟、几分钟...前
- 获取对应 GMT/UTC 日期和时间
方法如下:
/** * 获取两个时间之间相差的年、月、日、时、分、秒及总天数 * @param [type] $str 开始时间 * @param [type] $end 结束时间 * @return [type] 返回数据集 */ function diffTime($str,$end) { $str = new \DateTime($str); $end = new \DateTime($end); $res = $str->diff($end); $return['y'] = $res->format('%Y'); #年 $return['m'] = $res->format('%m'); #月 $return['d'] = $res->format('%d'); #日 $return['h'] = $res->format('%h'); #时 $return['i'] = $res->format('%i'); #分 $return['s'] = $res->format('%s'); #秒 $return['a'] = $res->format('%a'); #总天数 return $return; } #调用测试 $str = '2020-01-01 12:00:00'; $end = '2015-05-20 22:10:22'; $res = diffTime($str,$end); echo "<pre>"; print_r($res); die;
结果如下:
Array ( [y] => 04 [m] => 7 [d] => 11 [h] => 13 [i] => 49 [s] => 38 [a] => 1686 )
2020年08月28日
方法如下:
$res = intval(date('W',strtotime('2020-08-28'))); #获取第几周 echo $res;
结果如下:
35
2020年08月28日
方法如下:
/** * 计算一年有多少周,每周从星期一开始, * 如果最后一天在周四后(包括周四)算完整的一周,否则不计入当年的最后一周 * 如果第一天在周四前(包括周四)算完整的一周,否则不计入当年的第一周 * @param int $year * return int */ function week($year) { $year_start = mktime(0,0,0,1,1,$year); $year_end = mktime(0,0,0,12,31,$year); if (intval(date('W',$year_end))===1){ return date('W',strtotime('last week',$year_end)); }else{ return date('W',$year_end); } } #调用测试 $res = week(date('Y')); echo $res;
结果如下:
53
2020年08月28日
方法:
/** * 获取某年第几周的开始日期和结束日期 * @param int $year * @param int $week 第几周; */ function weekday($year,$week=1) { $year_start = mktime(0,0,0,1,1,$year); $year_end = mktime(0,0,0,12,31,$year); // 判断第一天是否为第一周的开始 if (intval(date('W',$year_start))===1) { $lastday=date("Y-m-d",strtotime(date('Y-m-d',$year_start)." Sunday")); $start=strtotime(date("Y-m-d",strtotime($lastday."-6 days"))); //$start = $year_start;//把第一天做为第一周的开始 }else{ $start = strtotime('+1 monday',$year_start);//把第一个周一作为开始 } // 第几周的开始时间 if ($week==1){ $weekday['start'] = $start; }else{ $weekday['start'] = strtotime($week.' monday',$start); } // 第几周的结束时间 $weekday['end'] = strtotime('+1 sunday',$weekday['start']); if (date('Y',$weekday['end'])!=$year) { $weekday['end'] = $year_end; } return $weekday; // return date('m.d',$weekday['start']).'-'.date('m.d',$weekday['end']); } #调用测试 $res = weekday(date('Y'),'35'); echo "<pre>"; print_r($res);
结果如下:
Array ( [start] => 1598198400 [end] => 1598716800 )
此方法可根据自己需要转换为自己需要的格式
此方法原来并不支持跨年,在此为博主大大的改动下可以的,
原来我是看到评论才找到这篇的,最开始不支持跨年的并未有记录,抱歉
原博主地址:
曉笙通幽 : https://www.cnblogs.com/lin-er/p/11295653.html#4589275
2020年08月28日
方法:
/** * 根据时间戳获得是几秒钟、几分钟..前 * @param [type] $time 对应时间戳 * @return [type] 对应返回 */ function format_date($time) { $t=time()-$time; //<span style="white-space:pre"> </span>//echo time(); $f=array( '31536000'=>'年', '2592000'=>'个月', '604800'=>'周', '86400'=>'天', '3600'=>'小时', '60'=>'分钟', '1'=>'秒' ); foreach ($f as $k=>$v) { if (0 !=$c=floor($t/(int)$k)) { return $c.$v.'前'; } } } #测试调用 $res = format_date(time()-10); echo "<pre>"; print_r($res);
调用结果:
10秒前
原文地址:
蓦然回首恍然如梦 : https://www.cnblogs.com/bluealine/p/7884519.html
方法二:
/** * 根据时间戳获得是几分钟,几秒钟,之前 * @param [type] $addtime [description] * @return [type] [description] */ function getzpinfotime($addtime) { $times = time()-$addtime; if($times < 60) { $trim = $times."秒前"; } elseif($times < 3600 && $times>60) { $trim = ceil($times/60)."分钟前"; } elseif($times < 86400 && $times > 3600) { $trim = ceil($times/3600)."小时前"; } else if($times < 604800 && $times > 86400) { $trim = ceil($times/86400)."天前"; } else if($times < 2592000 && $times > 604800) { $trim = ceil($times/604800)."周前"; } else if($times < 31536000 && $times > 2592000) { $trim = ceil($times/2592000)."月前"; } else{ $trim = ceil($times/31536000)."年前"; } return $trim; }
2020年08月28日
方法函数如下:
#方法一 date_default_timezone_set("GMT"); $Timestamp = date("Y-m-d\TH:i:s\Z"); #方法二 $Timestamp = gmdate("Y-m-d\TH:i:s\Z");
2020年09月08日
方法持续更新中...
没有谁是离不开谁的,只是愿意不愿意罢了...
2020年08月27日
时间会冲淡一切,不管你承认不承认,这个是事实。。
2020年09月08日