什么是时间戳?
该怎么用?

解决方案 »

  1.   

    **为PHP添加DateAdd函数 正如在文章一开始我所说的-写本文的原因是因为我在PHP中找不到类似ASP的DateDiff函数。在介绍完PHP是如何处理日期和时间,让我们将ASP中常用的两个函数移植到PHP。第一个函数是DateAdd。 
    根据Vbscript的文档,DateAdd(interval,number,date)函数的定义为“返回已添加指定时间间隔的日期。” 
    Inetrval为表示要添加的时间间隔字符串表达式,例如分或天;number为表示要添加的时间间隔的个数的数值表达式;Date表示日期。 
    Interval(时间间隔字符串表达式)可以是以下任意值: 
    yyyy year年 
    q Quarter季度 
    m Month月 
    y Day of year一年的数 
    d Day天 
    w Weekday一周的天数 
    ww Week of year周 
    h Hour小时 
    n Minute分 
    s Second秒 
    w、y和d的作用是完全一样的,即在目前的日期上加一天,q加3个月,ww加7天。 

    function DateAdd ($interval, $number, $date) { 
    $date_time_array = getdate($date); 
    $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"]; 
    switch ($interval) { 
    case "yyyy": $year +=$number; break; 
    case "q": $month +=($number*3); break; 
    case "m": $month +=$number; break; 
    case "y": 
    case "d": 
    case "w": $day+=$number; break; 
    case "ww": $day+=($number*7); break; 
    case "h": $hours+=$number; break; 
    case "n": $minutes+=$number; break; 
    case "s": $seconds+=$number; break; 

    $timestamp = mktime($hours ,$minutes, $seconds,$month ,$day, $year); 
    return $timestamp;} 

    我们可以将上面的代码保存为dateadd.inc文件,然后运行以下代码: 

    include('dateadd.inc'); 
    $temptime = time(); 
    echo strftime( "%Hh%M %A %d %b",$temptime); 
    $temptime = DateAdd("n" ,50,$temptime); 
    echo "p"; 
    echo strftime( "%Hh%M %A %d %b",$temptime); 

    我们将得到: 
    15h41 Saturday 03 Jun 
    16h31 Saturday 03 Jun 
    为PHP添加DateDiff函数 
    现在DateAdd已经完成,那么DateDiff呢? 
    根据文档,DateDiff(interval,date1,date2)函数的定义为“返回两个日期之间的时间间隔”。 
    Intervals参数的用法与DateAdd函数中的相同。出于避免过于复杂的考虑,我们决定忽略Vbscript中DateDiff函数中其它复杂的参数,即其两个可选的参数变量[firstdayofweek[, firstweekofyear]](它们用于决定星期中第一天是星期天还是星期一和一年中第一周的常数。而且我们只允许intervals有以下五个值:"w"(周)、"d"(天)、"h"(小时)、"n"(分钟) 和"s"(秒)。 Let's see what we can come up with: 下面的代码是我们所需要的: 

    Function DateDiff ($interval, $date1,$date2) { 
    // 得到两日期之间间隔的秒数 
    $timedifference = $date2 - $date1; 
    switch ($interval) { 
    case "w": $retval = bcdiv($timedifference ,604800); break; 
    case "d": $retval = bcdiv( $timedifference,86400); break; 
    case "h": $retval = bcdiv ($timedifference,3600); break; 
    case "n": $retval = bcdiv( $timedifference,60); break; 
    case "s": $retval = $timedifference; break; 

    return $retval;} 

    将上面的代码存为datediff.inc文件,然后运行下面的代码: 

    include('datediff.inc'); 
    include('dateadd.inc'); 
    $currenttime = time(); 
    echo "Current time: ". strftime("%Hh%M %A %d %b" ,$currenttime)."br"; 
    $newtime = DateAdd ("n",50 ,$currenttime); 
    echo "Time plus 50 minutes: ". strftime("%Hh%M %A %d %b" ,$newtime)."br"; 
    $temptime = DateDiff ("n",$currenttime ,$newtime); 
    echo "Interval between two times: ".$temptime; 

    如果一切顺利,你可以看到以下结果: 
    Current time: 16h23 Saturday 03 Jun 
    Time plus 50 minutes: 17h13 Saturday 03 Jun 
    Interval between two times: 50 
    如果你在Unix机器上运行PHP,你必须编译PHP支持BC高精度函数。你必须从以下地址http://www.php.net/extra/number4.tar.gz下载BC库,然后将其解压到PHP4的根目录下,重新编译PHP,编译时要加上--enable-bcmath的选项。(详细说明见PHP4中README.BCMATH)。PHP4的Windows版本则不需要做任何修补即可直接使用BC高精度函数。 
    现在你已经得到处理日期和时间的函数,剩下的就是如何将其运用到你的PHP程序中。
      

  2.   

    给你共享一下这个文档。自己研究研究吧。
      

  3.   

    弄明白了
    看来我的脑袋反应太慢了
    呵呵