ホームページ >バックエンド開発 >PHPチュートリアル >php_PHP チュートリアルでの時間処理
/**
* UNIX タイムスタンプに変換します
*/
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]);
$時間 = 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)
* 指定された時間間隔を加算した日付を返します。
* 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 分
* s 秒
* w、y、d の関数はまったく同じです。つまり、現在の日付に 1 日を加算し、q は 3 か月を加算し、ww は 7 日を加算します。
*/
function DateAdd($interval, $number, $date) {
$date = gettime($date);
$date_time_array = getdate($date);
$hours = $date_time_array["hours"];
$ minutes = $date_time_array["分"];
$秒 = $date_time_array["秒"];
$month = $date_time_array["mon"];
$day = $date_time_array["mday"];
$year = $date_time_array["年"];
switch ($interval) {
case "yyyy": $year +=$number;壊す;
case "q": $month +=($number*3);壊す;
ケース "m": $month +=$number;壊す;
ケース「y」:
ケース「d」:
ケース「w」: $day+=$number;壊す;
ケース "ww": $day+=($number*7);壊す;
ケース "h": $hours+=$number;壊す;
ケース「n」: $分+=$number;壊す;
ケース「s」: $秒+=$number;壊す;
}
$timestamp = mktime($時間、$分、$秒、$月、$日、$年);
return $timestamp;
}
/**
* DateDiff(interval,date1,date2)
* 2 つの日付間の時間間隔を返します
* 間隔 (時間間隔文字列式) は次のいずれかの値です:
* w 週間
* d 日
* h 時間
* n 分
* s 秒
*/
function DateDiff ($interval, $date1,$date2) {
// 两日期の間间间間隔の秒数を得る
$timedifference = gettime($ date2) - gettime($date1);
switch ($interval) {
case "w": $retval = bcdiv($timedifference ,604800);壊す;
ケース "d": $retval = bcdiv( $timedifference,86400);壊す;
case "h": $retval = bcdiv ($timedifference,3600);壊す;
ケース "n": $retval = bcdiv( $timedifference,60);壊す;
case "s": $retval = $timedifference;壊す;
}
return $retval;
}
?>
// 例文
$d1 = "2002-01-11";
$d2 = date("Y-m-d",dateadd( "d",15,$d1));
echo $d1."的"。 datediff("d",$d1,$d2)."天後は$d2
";
echo $d1."の10天前です".date("Y-m-d",dateadd("d",-10 ,$d1))."
";
$d3 = date("Y/m/d H:i:s");
echo "现在在".$d3."距離离2002/2/12 12:59:59有".datediff("s",$d3,"2002/2/12 12:59:59")."秒
";
?>