Maison > développement back-end > tutoriel php > Comment obtenir l'année, le mois, le jour, l'heure, la minute et la seconde entre une période spécifiée en PHP

Comment obtenir l'année, le mois, le jour, l'heure, la minute et la seconde entre une période spécifiée en PHP

墨辰丷
Libérer: 2023-03-29 10:54:02
original
1821 Les gens l'ont consulté

Le frontal transmet deux formats d'heure standard, le format est du type 2009-05-12 12:12:30, puis renvoie la représentation des différentes unités de cette période de temps selon les besoins. Je n'ai pas posté le code ici. la vérification du format de l'heure, pensez donc à ajouter

code principal lorsque vous l'utilisez :

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;
	}
}
Copier après la connexion

Un jour de plus dans un par an, la valeur renvoyée est de 2 ans , la valeur de retour d'un jour plus d'un mois est de 2 mois, donc... J'ai fait cela à cause des besoins du projet. Au début, j'ai aussi cherché de tels exemples sur Internet, mais tout le monde. utilisé l'année comme calcul de 365 jours, le mois est calculé sur la base de 30 jours, le résultat calculé de cette manière est définitivement inutile. L'année peut être de 366 jours, le mois peut être de 31, 29 ou 28

Résumé : Ce qui précède représente l’intégralité du contenu de cet article, j’espère qu’il sera utile à l’étude de chacun.

Recommandations associées :

phpUtilisation de la fonction get_class_methods() pour obtenir un exemple d'analyse de méthode de classification

phpExplication détaillée de la façon dont les fonctions personnalisées implémentent la fonction de tri de tableaux bidimensionnels

Comment PHP convertit le contenu de la zone de texte au format HTML

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal