| GZU521.COM学习网 |
|
$date_elements = explode("/" ,$access_date); // 此时 // $date_elements[0] = 2000 // $date_elements[1] = 5 // $date_elements[2] = 27 echo mktime (0, 0,0 ,$date_elements [1], $date_elements[ 2],$date_elements [0]); ? 我们看一个比从access数据库单纯获得日期更复杂的情况,我们得到一个以下格式的日期和时间:2000/05/27 02:40:21 pm ? // 来自access的字符串 $date_time_string = "2000/05/27 02:40:21 pm"; // 将字符串分解成3部分-日期、时间和上午/下午 $dt_elements = explode(" " ,$date_time_string); // 分解日期 $date_elements = explode("/" ,$dt_elements[ 0]); // 分解时间 $time_elements = explode(":" ,$dt_elements[ 1]); // 如果是下午,我们将时间增加12小时以便得到24小时制的时间 if ($dt_elements [2]== "pm") { $time_elements[ 0]+=12;} // 输出结果 echo mktime ($time_elements [0], $time_elements[ 1], $time_elements[ 2], $date_elements[1], $date_elements[2], $date_elements[0]); ? **修改日期 有时我们需要知道6小时以后是什么时间,35天前的日期或者从你最后一次玩quake3后已过去多少秒。我们已经知道如何用mktime()函数从单独的日期和时间中获得unix的时间戳值。如果我们需要的并非目前日期和时间的unix时间戳值,我们该咋办?下面是一些练习可以帮助说明我们后面所要做的。 正如前面所见,mktime()使用以下参数:小时、分、秒、月、天和年。想想第二节,getdate()函数可以为我们获得这些参数。 ? // 将目前的时间戳值放入一数组内 $timestamp = time(); echo $timestamp; echo "p"; $date_time_array = getdate( $timestamp); // 用mktime()函数重新产生unix时间戳值 $timestamp = mktime($date_time_array ["hours"], $date_time_array["minutes" ],$date_time_array[ "seconds"],$date_time_array ["mon"], $date_time_array["mday" ],$date_time_array[ "year"]); echo $timestamp; ? 看起来有一些令人感到迷惑。我将用一些变量来使上面的程序看起来更容易了解。 ? // 将目前的时间戳值放入一数组内 $timestamp = time(); echo $timestamp; echo "p"; $date_time_array = getdate( $timestamp); $hours = $date_time_array[ "hours"]; $minutes = $date_time_array["minutes"]; $seconds = $date_time_array[ "seconds"]; $month = $date_time_array["mon"]; $day = $date_time_array["mday"]; $year = $date_time_array["year"]; // 用mktime()函数重新产生unix时间戳值 $timestamp = mktime($hours ,$minutes, $seconds,$month ,$day,$year); echo $timestamp; ? 现在我们将由getdate()所产生的时间戳值放入相对应的名称变量中,所以代码变得相对容易阅读和理解。现在如果我们需要在目前的时间上加上19个小时,我们用$hours+19代替mktime()函数中的$hours。mktime()将自动为我们将时间转到第二天。 ? // 将目前的时间戳值放入一数组内 $timestamp = time(); echo strftime( "%hh%m %a %d %b",$timestamp); echo "p"; $date_time_array = getdate($timestamp); $hours = $date_time_array["hours"]; $minutes = $date_time_array["minutes"]; $seconds = $date_time_array["seconds"]; $month = $date_time_array["mon"]; $day = $date_time_array["mday"]; $year = $date_time_array["year"]; // 用mktime()函数重新产生unix时间戳值 // 增加19小时 $timestamp = mktime($hours + 19, $minutes,$seconds ,$month, $day,$year); echo strftime( "%hh%m %a %d %b",$timestamp); echo "br~e after adding 19 hours"; ? 运行后得到: 14h58 saturday 03 jun 09h58 SUNday 04 jun ~e after adding 19 hours 减少时间也是同样的-你只需要减少相应变量的值即可。 得到两个不同时间值的差同样也是非常简单。你所需要做的只是将两个时间值转换为unix的时间戳值,然后两者相减即可。两者之差即为两个时间所相隔的秒数。另外一些算法可以很快地将秒转为天、小时、分和秒。 |
责任编辑:gzu521