文章浏览 复制本页面地址

PHP时间运算

计算每天开始和结束时间

$begin = mktime (0,0,0,date('m'),date('d'),  date('Y'));

$end = mktime (0,0,0,date('m'),date('d')+1,  date('Y'));

 

计算每周开始和结束时间

$weekTime = date('w',time());
$begin    = mktime (0,0,0,date('m'),date('d'),date('Y'))-($weekTime-1)*86400;//本周的第一天
$end      = $begin+7*86400;    //本周的最后一天

 

计算每月开始和结束时间

$begin = mktime (0,0,0,date('m'),1,date('Y'));
$end   = mktime (0,0,0,date('m')+1,1,date('Y'));

1.
PHP里怎么将2个字符串时间相减得到秒数? 
 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.

$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 [, intsecond [, int month [, int day [, int year ]]]]]] )
该函数中所有参数都是可选的,如果参数为空,默认将当前时间转变成UNIX时间戳。这样,和直接调用time()函数获取当前的UNIX时间戳功能相同。参数也可以从右向左省略,任何省略的参数会被设置成本地日期和时间的当前值。如果只想转变日期,对具体的时间不在乎,可以将前三个转变时间的参数都设置为0。mktime()函数对于日期运算和验证非常有用,它可以自动校正越界的输入。如下所示:
1.2.    echo date("M-d-Y", mktime(0, 0, 0, 12, 36, 2007))."
";//日期超过31天,计算后输出Jan-05-2008  3.    echo date("M-d-Y", mktime(0, 0, 0, 14, 1, 2008))."
"; //月份超过12月,计算后输出Feb-01-2009  4.    echo date("M-d-Y", mktime(0, 0, 0, 1, 1, 2009))."
";  //没有问题的转变,输出结果 Jan-01-2009  5.    echo date("M-d-Y", mktime(0, 0, 0, 1, 1, 99))."
";  //会将99年转变为1999年, Jan-01-1999  6.?>
2.日期的计算
在PHP中,计算两个日期之间相隔的长度,最简单的方法就是通过计算两个UNIX时间戳之差来获得。例如,在PHP脚本中接收来自HTML表单用户提交的出生日期,计算这个用户的年龄。如下所示:
1. 2.    $year = 1981;                                 //从表单中接收用户提交的出生日期中的年份  3.    $month = 11;                                   //从表单中接收用户提交的出生日期中的月份  4.    $day = 05;                                      //从表单中接收用户提交的出生日期中的天  5.    $birthday = mktime (0, 0, 0, $month, $day, $year);     //将出生日期转变为UNIX时间戳  6.    $nowdate = time();                             //调用time()函数获取当前时间的UNIX时间戳  7.    $ageunix = $nowdate - $birthday;                  //两个时间戳相减获取用户年龄的UNIX时间戳  8.    $age = floor($ageunix / (60*60*24*365));          //将UNIX时间戳除以一年的秒数获取用户年龄  9.    echo "年龄:$age";                         //输出用户的年龄,根据计算得到结果27  10.?>
在以上脚本中,调用mktime()函数将从用户出生日期转变为UNIX时间戳,再调用time()函数获取当前时间的UNIX时间戳。因为这个日期的格式都是使用整数表示的,所以可以将它们相减。又将计算后获取的UNIX时间戳除以一年的秒数,将UNIX时间戳转变为以年度量的单位。

标签:
上一篇:
下一篇: