PHP年龄计算 取得两个时间戳相差的年龄年月日显示

因需要显示对象的年龄,在网上找了几个看着不是太理想,自己写了一个,取得两个时间戳相差年龄的函数,显示结果为x岁x月x天,年月为零时,不显示年月,原理为:年月日相减,数不够的,按年和月的进位借数,最终得到年月日的时间值。

<?PHP
/*
 * ==============================
 * 此方法由 mantye 提供  
 * http://my.oschina.net/u/223350 
 * @date 2014-07-22
 * ==============================
 * @description    取得两个时间戳相差的年龄
 * @before         较小的时间戳
 * @after          较大的时间戳
 * @return str     返回相差年龄y岁m月d天
**/
function datediffage($before, $after) {
 if ($before>$after) {
  $b = getdate($after);
  $a = getdate($before);
 }
 else {
  $b = getdate($before);
  $a = getdate($after);
 }
 $n = array(1=>31,2=>28,3=>31,4=>30,5=>31,6=>30,7=>31,8=>31,9=>30,10=>31,11=>30,12=>31);
 $y=$m=$d=0;
 if ($a[‘mday‘]>=$b[‘mday‘]) { //天相减为正
  if ($a[‘mon‘]>=$b[‘mon‘]) {//月相减为正
   $y=$a[‘year‘]-$b[‘year‘];$m=$a[‘mon‘]-$b[‘mon‘];
  }
  else { //月相减为负,借年
   $y=$a[‘year‘]-$b[‘year‘]-1;$m=$a[‘mon‘]-$b[‘mon‘]+12;
  }
  $d=$a[‘mday‘]-$b[‘mday‘];
 }
 else {  //天相减为负,借月
  if ($a[‘mon‘]==1) { //1月,借年
   $y=$a[‘year‘]-$b[‘year‘]-1;$m=$a[‘mon‘]-$b[‘mon‘]+12;$d=$a[‘mday‘]-$b[‘mday‘]+$n[12];
  }
  else {
   if ($a[‘mon‘]==3) { //3月,判断闰年取得2月天数
    $d=$a[‘mday‘]-$b[‘mday‘]+($a[‘year‘]%4==0?29:28);
   }
   else {
    $d=$a[‘mday‘]-$b[‘mday‘]+$n[$a[‘mon‘]-1];
   }
   if ($a[‘mon‘]>=$b[‘mon‘]+1) { //借月后,月相减为正
    $y=$a[‘year‘]-$b[‘year‘];$m=$a[‘mon‘]-$b[‘mon‘]-1;
   }
   else { //借月后,月相减为负,借年
    $y=$a[‘year‘]-$b[‘year‘]-1;$m=$a[‘mon‘]-$b[‘mon‘]+12-1;
   }
  }
 }
 return ($y==0?‘‘:$y.‘岁‘).($m==0?‘‘:$m.‘个月‘).($d==0?‘‘:$d.‘天‘);
}
?>

PHP年龄计算 取得两个时间戳相差的年龄年月日显示

时间: 2024-08-08 06:13:09

PHP年龄计算 取得两个时间戳相差的年龄年月日显示的相关文章

Oracle计算两个时间戳相差秒数,精确到毫秒

with t as (select to_timestamp('2015-01-01 11:13:15.023456', 'yyyy-mm-dd hh24:mi:ss.ff9') t1, to_timestamp('2015-01-01 12:13:15.123556', 'yyyy-mm-dd hh24:mi:ss.ff9') t2 from dual) select abs((trunc(t1 - 0, 'mi') - trunc((t2 - 0), 'mi')) * 24 * 60 * 6

实现两个unix时间戳的差,并返回两个时间戳相差的天、小时、分、秒,精确到秒

function timediff($begin_time,$end_time) { if($begin_time < $end_time){ $starttime = $begin_time; $endtime = $end_time; } else{ $starttime = $end_time; $endtime = $begin_time; } $timediff = $endtime-$starttime; $days = intval($timediff/86400); $remai

PHP 计算两个时间戳之间相差的时间

//功能:计算两个时间戳之间相差的日时分秒 //$begin_time 开始时间戳 //$end_time 结束时间戳 function timediff($begin_time,$end_time) { if($begin_time < $end_time){ $starttime = $begin_time; $endtime = $end_time; }else{ $starttime = $end_time; $endtime = $begin_time; } //计算天数 $timed

计算两个时间戳之间相差的时间

代码如下 //功能:计算两个时间戳之间相差的日时分秒 //$begin_time 开始时间戳 //$end_time 结束时间戳 function timediff($begin_time,$end_time) { if($begin_time < $end_time){ $starttime = $begin_time; $endtime = $end_time; }else{ $starttime = $end_time; $endtime = $begin_time; } //计算天数 $

输入两个时间戳,计算差值

<?php date_default_timezone_set("Asia/Shanghai"); //date_default_timezone_set("UTC"); //date_default_timezone_set("PRC"); //输入两个时间戳,计算差值,也就是相差的小时数,如返回2:10,则表示输入的两个时间相差2小时10分钟  function hours_min($start_time,$end_time){  if

计算两个时间相差多少年月日的sql算法

1 /****** Object: StoredProcedure [dbo].[GetDateDiff] Script Date: 11/12/2019 16:14:05 ******/ 2 SET ANSI_NULLS ON 3 GO 4 SET QUOTED_IDENTIFIER ON 5 GO 6 --计算两个时间相差多少年月日的sql算法,用于新生儿年龄计算 7 ALTER PROCEDURE [dbo].[GetDateDiff] 8 @fromDate NVARCHAR(10) ,

js计算两个时间相差的天数

day1='2014-03-31 00:00:01'; function get_day(day1,day2){ var s = day1; var dt = Date.parse(s.replace(/-/g,"/")); var day1 = new Date(dt); var s = day2; var dt = Date.parse(s.replace(/-/g,"/")); var day2 = new Date(dt); var date3=day1.g

计算两个日期相差年月日

1 /** 2 +---------------------------------------------------------- 3 * 功能:计算两个日期相差 年 月 日 4 +---------------------------------------------------------- 5 * @param date $date1 起始日期 6 * @param date $date2 截止日期日期 7 +-------------------------------------

计算两个日期相差

package com.xcfh.util; import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.Calendar;import java.util.Date;import java.util.GregorianCalendar; /** *  * @ClassName: DateMargin *  * @Description: 计算两个日期相差天数 * @author PineT