现在的位置: 首页 > 综合 > 正文

PHP时间相减总结

2013年08月12日 ⁄ 综合 ⁄ 共 160字 ⁄ 字号 评论关闭
文章目录

1.

PHP里怎么将2个字符串时间相减得到秒数?
$a = '2010-02-05 16:08:20';
$b = '2010-02-05 16:09:20';
b比a大1分钟也就是60秒,怎么相减得到60

把这个转化为具体的时间戳,用strtotime

strtotime($b)-strtotime($a)=60

得到秒数,然后就可以减了

2.

$bbb= "08:55 ";
$aaa= "08:50 "   ;
echo   ceil((strtotime($bbb)-strtotime($aaa))/60);
?>

 

3.

获得系统当前时间 :
$ctime=strtotime(date("Y-m-d H:i:s"));

$ctime-$logtime>180

4.

时间戳比较

比如,数据库里面的时间戳:1276650817 是2010年6月16日 9:13:37
目前本地时间是:1276674758 是2010年6月16日 15:52:38
我想让前台显示,此文章是XXX天XXX小时XXX分钟前发布

----------------

$time = 1276674758-1276650817;
$yourhour = (int)($time/(60*60));
$yourmin = (int)($time%(60*60)/60);

把两个时间戳相减,然后把得到的数据跟一天的秒数相除再取整,然后再把剩下的跟小时去相除取整,以此类推就是啦

5.

$date = "2004-12-02 08:18:12";
$date1 = "2004-12-08 09:18:12";
echo strtotime($date)."
";
echo strtotime($date1)."
";
$date2 = strtotime($date1)-strtotime($date);
echo $date2; ?>
这样得到的$date2就是相差的秒数,再除以3600就是小时了

6.

我从某页面上匹配了时间 

$year = 2010  $month = 07  $day = 01  $hour = 17  $minute = 30

请问如何才能将今天的日期与上面这些值(年 月 日 时 分)相减,得出两个日期之间相差的天数、时间、分钟?然后print出来?

---------------------------------------------


 

UNIX时间戳

 

10.2  日期和时间

在开发Web程序时,时间起着重要的作用。不仅在数据存储和显示时需要日期和时间的管理,有一些功能模块的开发,时间通常是至关重要的。例如,网页静态化需要判断缓存时间、计算页面访问消耗的时间、在不同的时间段提供不同的功能等。PHP提供了强大的日期和时间处理功能,通过时间和日期函数库,能够得到PHP程序在运行时所在服务器中的日期和时间,并可以对它们进行检查和格式化,在不同格式之间进行转换。

10.2.1  UNIX时间戳

UNIX时间戳是保存日期和时间的一种紧凑简洁的方法,是大多数UNIX系统中保存当前日期和时间的一种方法,也是在大多数计算机语言中表示日期和时间的一种标准格式。以32位的整数表示格林威治标准时间,例如,使用整数11230499325表示当前时间的时间戳。UNIX时间戳是从1970年1月1日零点(UTC/GMT的午夜)开始起到当前时间所经过的秒数。1970年1月1日零点作为所有日期计算的基础,这个日期通常称为UNIX纪元。

因为UNIX时间戳是一个32位的数字格式,所以特别适用于计算机处理,例如计算两个时间点之间相差的天数。另外,由于文化和地区的差异,存在不同的时间格式,以及时区的问题。所以UNIX时间戳也是根据一个时区进行标准化,设计的一种通用格式,并且这种格式可以很容易的转换为任何格式。

也因为UNIX时间戳是一个32位的整数表示的,所以在处理1902年以前或2038年以后的事件,将会遇到一些问题。另外,在Windows下,由于时间戳不能为负数,如果使用PHP中提供的时间戳函数处理1970年之前的日期,就会发生错误。要使用PHP代码具有可移植性,必须记住这一点。

1.将日期和时间转变成UNIX时间戳

在PHP中,如果需要将日期和时间转变成UNIX时间戳,可以调用mktime()函数。该函数的原型如下所示:

  1. int mktime ( [int hour [, int minute [, int
    second [, int month [, int day [, int year ]]]]]] )

该函数中所有参数都是可选的,如果参数为空,默认将当前时间转变成UNIX时间戳。这样,和直接调用time()函数获取当前的UNIX时间戳功能相同。参数也可以从右向左省略,任何省略的参数会被设置成本地日期和时间的当前值。如果只想转变日期,对具体的时间不在乎,可以将前三个转变时间的参数都设置为0。mktime()函数对于日期运算和验证非常有用,它可以自动校正越界的输入。如下所示:

  1.     echo date("M-d-Y", mktime(0, 0, 0, 12, 36, 2007))."/n";
    //日期超过31天,计算后输出Jan-05-2008 
  2.     echo date("M-d-Y", mktime(0, 0, 0, 14, 1, 2008))."/n";
    //月份超过12月,计算后输出Feb-01-2009 
  3.     echo date("M-d-Y", mktime(0, 0, 0, 1, 1, 2009))."/n"; 
    //没有问题的转变,输出结果 Jan-01-2009 
  4.     echo date("M-d-Y", mktime(0, 0, 0, 1, 1, 99))."/n"; 
    //会将99年转变为1999年, Jan-01-1999 
  5. ?>

2.日期的计算

在PHP中,计算两个日期之间相隔的长度,最简单的方法就是通过计算两个UNIX时间戳之差来获得。例如,在PHP脚本中接收来自HTML表单用户提交的出生日期,计算这个用户的年龄。如下所示:

  1.     $year = 1981;                                
    //从表单中接收用户提交的出生日期中的年份 
  2.     $month = 11;                                  
    //从表单中接收用户提交的出生日期中的月份 
  3.     $day = 05;                                     
    //从表单中接收用户提交的出生日期中的天 
  4.     $birthday = mktime (0, 0, 0, $month, $day, $year);    
    //将出生日期转变为UNIX时间戳 
  5.     $nowdate = time();                            
    //调用time()函数获取当前时间的UNIX时间戳 
  6.     $ageunix = $nowdate - $birthday;                 
    //两个时间戳相减获取用户年龄的UNIX时间戳 
  7.     $age = floor($ageunix / (60*60*24*365));         
    //将UNIX时间戳除以一年的秒数获取用户年龄 
  8.     echo "年龄:$age";                        
    //输出用户的年龄,根据计算得到结果27 
  9. ?>

在以上脚本中,调用mktime()函数将从用户出生日期转变为UNIX时间戳,再调用time()函数获取当前时间的UNIX时间戳。因为这个日期的格式都是使用整数表示的,所以可以将它们相减。又将计算后获取的UNIX时间戳除以一年的秒数,将UNIX时间戳转变为以年度量的单位。

http://book.51cto.com/art/200909/153872.htm

抱歉!评论已关闭.