ホームページ  >  記事  >  バックエンド開発  >  PHP での UNIX タイムスタンプと日付の変換と計算の例、phpunix_PHP チュートリアル

PHP での UNIX タイムスタンプと日付の変換と計算の例、phpunix_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-13 10:13:46761ブラウズ

PHP、phpunixでのUNIXタイムスタンプと日付の変換と計算の例

UNIX タイムスタンプは、日付と時刻を保存するためのコンパクトで簡潔な方法です。これは、ほとんどの UNIX システムで現在の日付と時刻を保存する方法であり、ほとんどのコンピューター言語で日付と時刻を表すための標準形式です。グリニッジ標準時を 32 ビット整数として表します。たとえば、証明書 11230499325 を使用して現在時刻のタイムスタンプを表します。 UNIX タイムスタンプは、1970 年 1 月 1 日の午前 0 時 (UTC/GMT 午前 0 時) から現在時刻までの経過秒数です。 1970 年 1 月 1 日の 0 時がすべての日付計算の基礎となり、通常はこの日付が UNIX エポックになります。

UNIX タイムスタンプは 32 ビットの数値形式であるため、2 つの時点の間の日数を計算するなど、コンピューター処理に特に適しています。さらに、文化や地域の違いにより、時間形式やタイムゾーンの問題も異なります。したがって、UNIX タイムスタンプもタイムゾーンに従って標準化されるように設計されたユニバーサル形式であり、この形式は任意の形式に簡単に変換できます。また、UNIX タイムスタンプは 32 ビット証明書で表されるため、1902 年より前または 2038 年以降のイベントを処理するときにいくつかの問題が発生します。また、Windows ではタイムスタンプに負の値を指定できないため、PHP が提供するタイムスタンプ関数を使用して 1970 年より前の日付を処理するとエラーが発生します。 PHP コードを移植可能にするには、この点に留意する必要があります。

日付と時刻をUNIXタイムスタンプに変換します

PHP では、日付と時刻を UNIX タイムスタンプに変換する必要がある場合、mktime() 関数を呼び出すことができます。この関数のプロトタイプは次のようになります:

コードをコピーします コードは次のとおりです:

int mktime([int 時間 [,int 分[,int 秒[,int 月[,int 日[int 年]]]]]])

この関数のパラメータはすべてオプションです。パラメータが空の場合、デフォルトで現在時刻が UNIX タイムスタンプに変換されます。このように、time() 関数を直接呼び出して現在の UNIX タイムスタンプを取得するのと同じ機能があります。パラメータは右から左に省略することもでき、省略されたパラメータにはローカルの日付と時刻の現在の値が設定されます。日付のみを変換し、特定の時刻を気にしない場合は、最初の 3 つの変換時間パラメータを 0 に設定できます。 mktime() 関数は、日付の操作と検証に非常に役立ちます。これは自動的に修正できます。境界入力。以下に示すように:

コードをコピーします コードは次のとおりです:

echo date("Y-m-d",mktime(0,0,0,12,36,2008))."n"; //日付が 31 日を超えており、計算された出力は 2009-01-05 です
echo date("Y-m-d",mktime(0,0,0,14,1,2010))."n"; //月が 12 を超えているため、計算後の出力は 2011-02-01 になります
echo date("Y-m-d",mktime(0,0,0,1,1,2012))."n"; //問題なく変換され、結果は 2012-01-01 になります
echo date("Y-m-d",mktime(0,0,0,1,1,99))."n"; // 99 年を 1999 年、1990-01-01 に変換します
?>

英語テキストの日付と時刻の記述を UNIX タイムスタンプに直接解析する必要がある場合は、strtotime() 関数を使用できます。この関数の円は次のとおりです。

コードをコピーします コードは次のとおりです:
int strtotime(文字列時間[,int now])

関数 strtotime() は、英語の自然言語で Acura Time のタイムスタンプを作成できます。米国英語の日付形式を含む文字列を受け入れ、それを UNIX タイムスタンプ (1970 年 1 月 1 日 00:00:00 GMT 以降) に解析しようとします。 )、その値は、now パラメータで指定された時刻を基準としています。2 番目のパラメータが指定されていない場合は、現在のシステム時刻が使用されます。関数が正常に実行された場合はタイムスタンプを返し、それ以外の場合は FALSE を返します。 mktime() との比較は次のとおりです:

コードをコピーします コードは次のとおりです:
echo date("Y-m-d", strtotime("now")) //現在のタイムスタンプを出力します
echo date("Y-m-d", strtotime("2012 年 5 月 8 日")) //出力 2012-05-08
echo date("Y-m-d", strtotime("+1 day")) // 現在の日付に 1 日を加えたものを出力します
echo date("Y-m-d", strtotime("last monday")); //出力 2012-04-02
?>


次の例では、strtotime() 関数を使用して記念日カウントダウン プログラムを作成し、プロジェクト開発でこの関数を実際に応用する方法を紹介します。 サンプル コードは次のとおりです。

コードをコピーします

コードは次のとおりです:

$now =strtotime("now") // 現在時刻
; $endtime= strtotime("2014-08-18 08:08:08"); //卒業時刻を設定してタイムスタンプに変換します

$sec = $endtime-$now //卒業時刻から現在までのタイムスタンプ (秒数) を取得します
$year = Floor($sec/3600/24/365) //このタイムスタンプから年数を変換します

$temp =$sec-$year*365*24*3600 //このタイムスタンプから年全体の秒を削除し、月の秒だけを残します
; $month=floor($temp/3600/24/30); //このタイムスタンプから月数を変換します

$temp=$temp-$month*30*3600*24; //タイムスタンプから月全体の秒を削除し、その日の説明のみを残します
$day = Floor($temp/24/3600); //このタイムスタンプから残りの日数を変換します

$temp=$temp-$day*3600*24; //このタイムスタンプから 1 日分の秒を削除し、時の秒だけを残します
$hour = Floor($temp/3600); //このタイムスタンプから残りの時間を変換します

$temp=$temp- $hour*3600; //タイムスタンプから時の秒を削除し、分の秒だけを残します
$ minutes=floor($temp/60); // このタイムスタンプから残りの小数部分を変換します

$秒1=$temp-$分*60 //残りは秒だけです
;
echo "卒業までは、まだ ($year) 年 ($month) ($day) 日 ($hour) 時間 ($分) 分 ($秒 1) 秒あります。";
?>

注: 指定された年が 2 桁形式の場合、その値 0 ~ 69 は 2000 ~ 2069 年を意味し、70 ~ 100 は 1970 ~ 2000 年を意味します。

日付計算

PHP で 2 つの日付間の長さを計算する最も簡単な方法は、2 つの UNIX タイムスタンプ間の差を計算することです。たとえば、HTML フォームからユーザーの生年月日を受け取り、ユーザーの年齢を計算する PHP スクリプトです。以下に示すように:

コードをコピーします コードは次のとおりです:

//ユーザーがフォームから送信した生年月日を年月日を受け取ります
$年 = 1981;
$month = 11;
$day = 05;
$birthday = mktime(0,0,0,$month,$day,$year) //生年月日を UNIX タイムスタンプに変換します
$nowdate = time(); // time() 関数を呼び出して、現在の時刻の UNIX タイムスタンプを取得します
$ageunix = $nowdate -$birthday; // 2 つのタイムスタンプを減算して、ユーザーの年齢の UNIX タイムスタンプを取得します
$age = Floor($ageunix/3600/24/365); //UNIX タイムスタンプを 1 年の秒数で割って、ユーザーの年齢を取得します
echo "年齢: $age";

?>

上記のスクリプトでは、mktime() 関数を呼び出すとユーザーの生年月日が UNIX タイムスタンプに変換され、次に time() 関数を呼び出して現在の時刻の UNIX タイムスタンプを取得します。日付形式は整数で表現されるため、減算することができます。計算後に得られたUNIXタイムスタンプを年間の秒数で割って、UNIXタイムスタンプを年単位に変換します。

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/914040.html技術記事 PHP での UNIX タイムスタンプと日付の変換と計算の例 phpunix UNIX タイムスタンプは、ほとんどの UNIX システムで現在の日付と...
を保存するためのコンパクトで簡潔な方法です。
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
前の記事:PHP は function_exists を使用して関数の利用可能なメソッドを決定します。phpfunction_exists_PHP チュートリアル次の記事:PHP は function_exists を使用して関数の利用可能なメソッドを決定します。phpfunction_exists_PHP チュートリアル

関連記事

続きを見る