<?
/**
* Convert to Unix Timestamp
*/
Function gettime ($ d ){
If (is_numeric ($ D ))
Return $ D;
Else {
If (! Is_string ($ D) return 0;
If (ereg (":", $ D )){
$ Buf = Split ("+", $ D );
$ Year = Split ("[-/]", $ Buf [0]);
$ Hour = Split (":", $ Buf [1]);
If (eregi ("PM", $ Buf [2])
$ Hour [0] + = 12;
Return mktime ($ hour [0], $ hour [1], $ hour [2], $ year [1], $ year [2], $ year [0]);
} Else {
$ Year = Split ("[-/]", $ D );
Return mktime (0, 0, 0, $ year [1], $ year [2], $ year [0]);
}
}
}
/**
*
* Dateadd (interval, number, date)
* Returns the date with the specified interval added.
* Inetrval indicates the time interval string expression to be added, for example, minute or day
* Number is a numeric expression that represents the number of time intervals to be added.
* Date indicates the date.
*
* Interval (Time Interval string expression) can be any of the following values:
* Yyyy Year
* Q quarter
* M month
* Y day of year
* D Day
* W weekday
* Ww week of year week
* H hour
* N minute points
* S second seconds
* W, y, and D play the same role, that is, add one day to the current date, add three months to Q, and add seven days to WW.
*/
Function dateadd ($ interval, $ number, $ date ){
$ Date = gettime ($ 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;
}
/**
* Datediff (interval, date1, date2)
* Returns the interval between two dates.
* Intervals (Time Interval string expression) can be any of the following values:
* W weeks
* D days
* H hour
* N minutes
* S seconds
*/
Function datediff ($ interval, $ date1, $ date2 ){
// Obtain the number of seconds between two dates
$ Timedifference = gettime ($ date2)-gettime ($ 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;
}
?>
<?
// Test example
$ D1 = "2002-01-11 ";
$ D2 = date ("Y-m-d", dateadd ("D", 15, $ D1 ));
Echo $ d1. ". datediff (" D ", $ D1, $ D2)." The day is $ D2 <br> ";
Echo $ d1. "10 days ago is ". date ("Y-m-d", dateadd ("D",-10, $ D1 )). "<br> ";
$ D3 = date ("Y/M/d h: I: s ");
Echo "now". $ D3. "there are still". datediff ("S", $ D3, "12:59:59"). "seconds <br>" from 12:59:59 ";
?>