php日期格式转换:php将日期转换成xx天前的格式

发布时间:2020-07-17编辑:脚本学堂
php日期格式转换的多种方法,php将日期格式转换成xx天前的格式,有关php时间与正则匹配的技巧,并介绍了php时间戳与日期的转换的各种方法。

一、php将日期格式转换成xx天前格式

例子,把时间格式化成3天前,5秒前,2年前的形式。
 

复制代码 代码示例:
// convert a date into a string that tells how long ago
// that date was.... eg: 2 days ago, 3 minutes ago.
function ago($d) {
 $c = getdate();
 $p = array('year', 'mon', 'mday', 'hours', 'minutes', 'seconds');
 $display = array('year', 'month', 'day', 'hour', 'minute', 'second');
 $factor = array(0, 12, 30, 24, 60, 60);
 $d = datetoarr($d);
 for ($w = 0; $w < 6; $w++) {
 if ($w > 0) {
  $c[$p[$w]] += $c[$p[$w-1]] * $factor[$w];
  $d[$p[$w]] += $d[$p[$w-1]] * $factor[$w];
 }
 if ($c[$p[$w]] - $d[$p[$w]] > 1) {
  return ($c[$p[$w]] - $d[$p[$w]]).' '.$display[$w].'s ago';
 }
 }
 return '';
}
// you can replace this if need be.
// This converts my dates returned from a mysql date string
// into an array object similar to that returned by getdate().
function datetoarr($d) {
 preg_match("/([0-9]{4})(-)([0-9]{2})(-)([0-9]{2})([0-9]{2})(:)([0-9]{2})(:)([0-9]{2})/",$d,$matches);
 return array(
 'seconds' => $matches[10],
 'minutes' => $matches[8],
 'hours' => $matches[6],
 'mday' => $matches[5],
 'mon' => $matches[3],
 'year' => $matches[1],
 );
}

二、解析php时间戳与日期的转换

php中时间戳与日期的转换

PHP时间戳获取当前时期的具体方式。

实现功能:获取某个日期的时间戳,或获取某个时间的PHP时间戳。
strtotime能将任何英文文本的日期时间描述解析为Unix时间戳,我们结合mktime()或date()格式化日期时间获取指定的时间戳,实现所需要的日期时间。
strtotime 将任何英文文本的日期时间描述解析为Unix时间戳[将系统时间转化成unix时间戳]

一,获取指定日期的unix时间戳
strtotime(”2009-1-22〃):
 

echo strtotime(”2009-1-22“)
结果:1232553600


说明:返回2009年1月22日0点0分0秒时间戳

二,获取英文文本日期时间
 
便于比较,使用date将当时间戳与指定时间戳转换成系统时间
(1)打印明天此时的时间戳strtotime(”+1 day“)
 

当前时间:echo date(”Y-m-d H:i:s”,time()) 结果:2009-01-22 09:40:25
指定时间:echo date(”Y-m-d H:i:s”,strtotime(”+1 day”)) 结果:2009-01-23 09:40:25


(2)打印昨天此时的PHP时间戳strtotime(”-1 day“)
 

当前时间:echo date(”Y-m-d H:i:s”,time()) 结果:2009-01-22 09:40:25
指定时间:echo date(”Y-m-d H:i:s”,strtotime(”-1 day”)) 结果:2009-01-21 09:40:25


(3)打印下个星期此时的时间戳strtotime(”+1 week“)
 

当前时间:echo date(”Y-m-d H:i:s”,time()) 结果:2009-01-22 09:40:25
指定时间:echo date(”Y-m-d H:i:s”,strtotime(”+1 week”)) 结果:2009-01-29 09:40:25


(4)打印上个星期此时的时间戳strtotime(”-1 week“)
 

当前时间:echo date(”Y-m-d H:i:s”,time()) 结果:2009-01-22 09:40:25
指定时间:echo date(”Y-m-d H:i:s”,strtotime(”-1 week”)) 结果:2009-01-15 09:40:25


(5)打印指定下星期几的PHP时间戳strtotime(”next Thursday“)
 

当前时间:echo date(”Y-m-d H:i:s”,time()) 结果:2009-01-22 09:40:25
指定时间:echo date(”Y-m-d H:i:s”,strtotime(”next Thursday”)) 结果:2009-01-29 00:00:00


(6)打印指定上星期几的时间戳strtotime(”last Thursday“)
 

当前时间:echo date(”Y-m-d H:i:s”,time()) 结果:2009-01-22 09:40:25
指定时间:echo date(”Y-m-d H:i:s”,strtotime(”last Thursday”)) 结果:2009-01-15 00:00:00


以上示例可知,strtotime能将任何英文文本的日期时间描述解析为Unix时间戳,我们结合mktime()或date()格式化日期时间获取指定的PHP时间戳,实现所需要的日期时间。

三、php计算到指定日期还有多少天的方法

php计算到指定日期还有多少天的方法

例子,php计算到指定日期还有多少天。
 

复制代码 代码示例:
function countdays($d)
{
 $olddate = substr($d, 4);
 $newdate = date(Y) ."".$olddate;
 $nextyear = date(Y)+1 ."".$olddate;
  if($newdate > date("Y-m-d"))
  {
  $start_ts = strtotime($newdate);
  $end_ts = strtotime(date("Y-m-d"));
  $diff = $end_ts - $start_ts;
  $n = round($diff / 86400);
  $return = substr($n, 1);
  return $return;
  }
  else
  {
  $start_ts = strtotime($nextyear);
  $end_ts = strtotime(date("Y-m-d"));
  $diff = $end_ts - $start_ts;
  $n = round($diff / 86400);
  $return = substr($n, 1);
  return $return;
  }
}

您可能感兴趣的文章: