Home  >  Article  >  Backend Development  >  How to get the year, month, day, hour, minute and second between a specified time period in PHP

How to get the year, month, day, hour, minute and second between a specified time period in PHP

墨辰丷
墨辰丷Original
2018-06-02 09:08:291796browse

The front end passes two standard time formats, the format is like 2009-05-12 12:12:30, and then returns the representation of different units of this time period as needed. I have not posted the code here for the verification of the time format. out, so when using it, consider adding the

core code:

Class Utils {
     /**
	 * format MySQL DateTime (YYYY-MM-DD hh:mm:ss) 把mysql中查找出来的数据格式转换成时间秒数
	 * @param string $datetime
	 */
	public function fmDatetime($datetime) {
	  $year = substr($datetime,0,4);
	  $month = substr($datetime,5,2);
	  $day = substr($datetime,8,2);
	  $hour = substr($datetime,11,2);
	  $min = substr($datetime,14,2);
	  $sec = substr($datetime,17,2);
	  return mktime($hour,$min,$sec,$month,$day,0+$year);
	}
	/**
	 * 
	 * 根据俩个时间获取俩个时间的 包含的 年,月数,天数,小时,分钟,秒
	 * @param String $start
	 * @param String $end
	 * @return ArrayObject 
	 */
	 private function diffDateTime($DateStart,$DateEnd){
		$rs = array();
		
		$sYear = substr($DateStart,0,4);
		$eYear = substr($DateEnd,0,4);
		
		$sMonth = substr($DateStart,5,2);
		$eMonth = substr($DateEnd,5,2);
		
		$sDay = substr($DateStart,8,2);
		$eDay = substr($DateEnd,8,2);
		
		$startTime = $this->fmDatetime($DateStart);
		$endTime = $this->fmDatetime($DateEnd);
		$dis = $endTime-$startTime;//得到俩个时间的秒数
		$d = ceil($dis/(24*60*60));//得到天数
		$rs['day'] = $d;//天数
		$rs['hour'] = ceil($dis/(60*60));//小时
		$rs['minute'] = ceil($dis/60);//分钟
		$rs['second'] = $dis;//秒数
		$rs['week'] = ceil($d/7);//周
		
		$tem = ($eYear-$sYear)*12;//月份
		$tem1 = $eYear-$sYear;//年
		if($eMonth-$sMonth<0){//月份相减为负
			$tem +=($eMonth-$sMonth);
		}else if($eMonth==$sMonth){//月份相同
			if($eDay-$sDay>=0){
				$tem ++;
				$tem1++;
			}
		}else if($eMonth-$sMonth>0){//月份相减正负
			$tem1++;
			if($eDay-$sDay>=0){//且日期相减为正数
				$tem +=($eMonth-$sMonth)+1;
			}else{
				$tem +=($eMonth-$sMonth);
			}
		}
		$rs[&#39;month&#39;] = $tem;
		$rs[&#39;year&#39;] = $tem1;
		
		return $rs;
	}
}

One more day in a year, the returned value is 2 years, one The return of one day more than a month is 2 months, so by extrapolation... I did this because of project needs. At first, I also looked for such examples on the Internet, but everyone calculated the year as 365 days. The month is calculated based on 30 days. The result calculated in this way is definitely useless. The year may be 366 days, the month may be 31, 29, or 28.

Summary: The above is the entire content of this article. I hope it will be helpful to everyone's study.

Related recommendations:

##phpUse the get_class_methods() function to obtain the classification method example analysis

phpDetailed explanation of the method of custom function to implement two-dimensional array sorting function

How PHP converts the text box content into HTML format

The above is the detailed content of How to get the year, month, day, hour, minute and second between a specified time period in PHP. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn