php获得一些時间完成方式(附编码)

近几天在开发设计的情况下碰到的一些時间上的难题,梳理了一下,共享给大伙儿,能看看,有必须得话能够运用一下。

1.获得上一月第一天及最终一天.

echo date('Y-m-01', strtotime('-1 month'));
echo " br/ 
echo date('Y-m-t', strtotime('-1 month'));
echo " br/ 

上边的方式一些难题,依据bg5hfc回应做下改动

//上一月第一天:
echo date('Y-m-d', strtotime(date('Y-m-01') . ' -1 month'));// 测算出当月第一天再减一个月
//上一月最终一天:
echo date('Y-m-d', strtotime(date('Y-m-01') . ' -1 day')); // 测算出当月第一天再减一天

2.获得本月第一天及最终一天.

$BeginDate=date('Y-m-01', strtotime(date("Y-m-d")));
echo $BeginDate;
echo " br/ 
echo date('Y-m-d', strtotime("$BeginDate +1 month -1 day"));
echo " br/ 

3.获得当日年代、月份、日及天数.

echo " 当月现有:".date("t")."天";
echo " 当今年代".date('Y');
echo " 当今月份".date('m');
echo " 当今几号".date('d');
echo " br/ 

4.应用涵数及数字能量数组来获得本月第一天及最终一天,较为好用

function getthemonth($date)
$firstday = date('Y-m-01', strtotime($date));
$lastday = date('Y-m-d', strtotime("$firstday +1 month -1 day"));
return array($firstday,$lastday);
$today = date("Y-m-d");
$day=getthemonth($today);
echo "本月的第一天: ".$day[0]." 本月的最终一天: ".$day[1];
echo " br/ 

获得当月时间:

function getMonth($date){
 $firstday = date("Y-m-01",strtotime($date));
 $lastday = date("Y-m-d",strtotime("$firstday +1 month -1 day"));
 return array($firstday,$lastday);

$firstday是月份的第一天,倘若$date是2018-2那样得话,$firstday便会是2018-02-01,随后依据$firstday加一个月便是2018-03-01,再减一天便是2018-02-28,用date()和strtotime()简直太便捷了。

获得上个月时间:

function getlastMonthDays($date){
 $timestamp=strtotime($date);
 $firstday=date('Y-m-01',strtotime(date('Y',$timestamp).'-'.(date('m',$timestamp)-1).'-01'));
 $lastday=date('Y-m-d',strtotime("$firstday +1 month -1 day"));
 return array($firstday,$lastday);

上个月时间必须先获得一个時间戳,随后在月份上-1就OK了,超智能化的date()会把2018-0-1这类物品变换成2017-12-01,太爽了。

获得下月时间:

function getNextMonthDays($date){
 $timestamp=strtotime($date);
 $arr=getdate($timestamp);
 if($arr['mon'] == 12){
 $year=$arr['year'] +1;
 $month=$arr['mon'] -11;
 $firstday=$year.'-0'.$month.'-01';
 $lastday=date('Y-m-d',strtotime("$firstday +1 month -1 day"));
 }else{
 $firstday=date('Y-m-01',strtotime(date('Y',$timestamp).'-'.(date('m',$timestamp)+1).'-01'));
 $lastday=date('Y-m-d',strtotime("$firstday +1 month -1 day"));
 return array($firstday,$lastday);

下月时间的编码看上去较为长一点,由于date()转不上相近2018-13-01这类物品,它会立即返回1970,因此前边必须解决一下11月的难题,除开11月就立即月份+1就OK啦。

总要来讲,還是很便捷的,时间涵数过强变大。