关于PHP 时间戳转换年月日问题。

<?php
$vipovertime='1807372800';//2027/4/11 00:00:00时间戳是这个时间
$sytime=$vipovertime-time();
$vipoverdate1=date('y',$sytime);
$vipoverdate2=date('m',$sytime);
$vipoverdate3=date('d',$sytime);
echo'会员剩余';
echo $vipoverdate1;
echo'年';
echo $vipoverdate2;
echo'个月';
echo $vipoverdate3;
echo'天';

//但是上面的代码输出的是“会员剩余79年12个月31天”
//但是实际上我是想显示“会员剩余9年11个月30天”
//应该改哪里。谢谢大神
?>

<?PHP
/*
 * ==============================
 * 此方法由 mantye 提供  
 * http://my.oschina.net/u/223350 
 * @date 2014-07-22
 * ==============================
 * @description    取得两个时间戳相差的年龄
 * @before         较小的时间戳
 * @after          较大的时间戳
 * @return str     返回相差年龄y岁m月d天
**/
$after =1529380306;
$before=time();
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.'天');

}
echo datediffage($before, $after)
?>

温馨提示:答案为网友推荐,仅供参考
第1个回答  2017-04-11
以前遇到过一个关于时间戳的问题,为了不被大家鄙视,先说一下概念。 具体时间戳怎么定义的我也不清楚,但百度百科中有这么一句:“时间戳是自 1970 年 1 月 1 日(00:00:00 GMT)至当前时间的总秒数”。 按这个定义,编程语言中倒是有一种类似的追问

求指教。新手来着