PHPの日付と時刻のレシピ

尊渡假赌尊渡假赌尊渡假赌
尊渡假赌尊渡假赌尊渡假赌オリジナル
2025-03-17 09:30:11572ブラウズ

PHPの日付と時刻のレシピ

日付と時間の処理は、プログラマーが頭痛を引き起こす問題の1つです。同時に、メタデータやソートから時間ベースのトリガー、およびその間の多数のアプリケーションまで、ソフトウェア開発の基盤です。

日付と時刻もエラーが発生しやすいです。不適切な取り扱いでは、エンドユーザーとプログラマーの同僚を混乱させることができます。

PHPプログラミング言語で日付と時間を処理する方法に関するクイックガイドを以下に示します。これは、日付のフォーマットや調整など、最も一般的なニーズのリファレンスとして設計されています。簡単ですが、ニーズの80%をカバーする可能性があります。

目次

  • 現在の日付と時刻を取得します
  • 特定の時間のためにDateTimeオブジェクトを構築します
  • タイムゾーン
  • ローカリゼーション
  • タイムトラベル
  • 定期的に発生する日時
  • 何日前?
  • 次のステップ?

この研究は、CSS-Tricksの公式学習パートナーであるFrontend Mastersによってサポートされていました。

フロントエンド開発トレーニングが必要ですか?

フロントエンドマスターは、学ぶのに最適な場所です。彼らは、すべての最も重要なフロントエンドテクノロジーのコースを提供しています。フルスタック開発者になることに興味がありますか?これがあなたの最良の選択です:

コースを受講####現在の日付と時刻を取得します

日付と時間は、タイムスタンプ(つまり、エポック時間)、データタイムオブジェクト、文字列の3つの形式で表すことができることに注意する必要があります。

まず、現在の日付と時刻のコードを取得します。

 
// string(26) "2021-10-13 22:25:11.790490"
// ["timezone_type"] =>
// int(3)
// ["timezone"] =>
//文字列(12)「アジア/ジャカルタ」
//}

これは、日付と時刻の文字列を作成するために使用できるデータタイムオブジェクトを提供します。

  format( "ymd");
echo $ now-> format( "ymd h:i:s a");

yが年を表すこと、mが月を表す、dは月の日付などを表すことを直感的に理解することができます。完全なパラメーターリストはPHPマニュアルにありますが、参照のために最も一般的に使用されるパラメーターのいくつかをリストします。

DateTimeオブジェクトは、タイムスタンプに変換できます。

  getTimestamp();

しかし、DateTimeオブジェクトを構築せずに現在のタイムスタンプを取得することもできます。

 <h3>特定の時間のためにDateTimeオブジェクトを構築します</h3>


<p>特定の時間のためにDateTimeオブジェクトを構築したい場合はどうなりますか(たとえば、2011年7月14日)?フォーマットされた日付文字列をコンストラクターに渡すことができます。</p>




// string(26) "2011-07-14 00:00:00.000000"
// ["timezone_type"] =>
// int(3)
// ["timezone"] =>
//文字列(12)「アジア/ジャカルタ」
//}



<p>コンストラクターは他の形式も受け入れます。</p>




// string(26) "2011-07-14 00:00:00.000000"
// ["timezone_type"] =>
// int(3)
// ["timezone"] =>
//文字列(12)「アジア/ジャカルタ」
//}



<p>ただし、次のような曖昧な形式に注意してください。</p>




// string(26) "2011-07-14 00:00:00.000000"
// ["timezone_type"] =>
// int(3)
// ["timezone"] =>
//文字列(12)「アジア/ジャカルタ」
//}



<p>誰もが米国の日付形式に精通しているべきだと思うかもしれません。しかし、誰もがそれに精通しているわけではなく、それは異なる方法で解釈されるかもしれません。 PostgreSQLも例外ではありません。</p>



存在しない場合はテーブルを作成します。datetime_demo
(
  created_at date
);

dateTime_demo(created_at)values('07/12/2011 ')に挿入;

dateTime_demoからcreated_at; * 2011-12-07 * /



<p>これは2011年7月12日に戻ると思うかもしれませんが、2011年12月7日に戻ります。より良いアプローチは、明示的な形式を使用することです。</p>




// string(26) "2021-10-08 16:00:47.000000"
// ["timezone_type"] =>
// int(3)
// ["timezone"] =>
//文字列(12)「アジア/ジャカルタ」
//}



<p>タイムスタンプからDateTimeオブジェクトを作成したい場合はどうなりますか?</p>



 sittimestamp(1634142890);
var_dump($ date);

// object(dateTime)#1(3){
// ["date"] =>
// string(26) "2021-10-13 23:34:50.000000"
// ["timezone_type"] =>
// int(3)
// ["timezone"] =>
//文字列(12)「アジア/ジャカルタ」
//}



<p>タイムスタンプオブジェクトをフォーマットされた日付文字列に変換する場合は、DateTimeオブジェクトを作成する必要はありません。</p>



<h3>タイムゾーン</h3>


<p>たとえば、太平洋の標準時間、東部の昼光時間などを扱っている場合、タイムゾーン情報を使用してDateTimeオブジェクトを作成できます。</p>




// string(26) "2021-10-13 05:00:00.000000"
// ["timezone_type"] =>
// int(3)
// ["timezone"] =>
//文字列(16) "America/new_york"
//}

//たとえば、東部の昼光時間:ニューヨーク$ date = new DateTime( "2021-10-13 05:00 EDT");
var_dump($ date);

// object(dateTime)#2(3){
// ["date"] =>
// string(26) "2021-10-13 05:00:00.000000"
// ["timezone_type"] =>
// int(2)
// ["timezone"] =>
//文字列(3) "edt"
//}

$ date = new DateTime( "2021-10-13 05:00-04:00");
var_dump($ date);

// object(dateTime)#1(3){
// ["date"] =>
// string(26) "2021-10-13 05:00:00.000000"
// ["timezone_type"] =>
// int(1)
// ["timezone"] =>
//文字列(6) "-04:00"
//}



<p>タイムゾーン情報を含むDateTimeオブジェクトを作成するには、3つの方法があります。 timezone_type各メソッドの異なる値を受け入れます。</p>



<p>しかし、ニューヨークのタイムゾーンに表示される日付と時間を、ジャカルタタイムゾーンに表示する日と時間を変換したい場合はどうでしょうか?</p>



 format( "ymd h:i a");
$ jakartatimezone = new DateTimeZone( "Asia/Jakarta");
$ date-> setimezone($ jakartatimezone);
echo $ date-> format( "ymd h:i a");



<p>ニューヨークは午前5時で、ジャカルタは2021年11月11日に午後5時です。しかし、1か月前、ジャカルタは以下に示すように、ニューヨークよりわずか11時間速かったです。</p>



 format( "ymd h:i a");
$ jakartatimezone = new DateTimeZone( "Asia/Jakarta");
$ date-> setimezone($ jakartatimezone);
echo $ date-> format( "ymd h:i a");



<p>PHPは夏時間を自動的に処理します。</p>


<h3>ローカリゼーション</h3>


<p>米国で日付と時刻を表示する一般的な方法は次のとおりです。</p>



フォーマット( "m/d/y h:i a");



<p>しかし、フランスの誰かが自分の地域よりも一般的な形式を好むかもしれません。彼らは「これは恐ろしい」と不平を言うかもしれません。第一に、米国以外の誰も、日付の前の月を置きません。第二に、フランスはAMまたはPMを使用しません。彼らは軍隊のような24時間のシステムを使用しています(例:午後2時ではなく14:00)。これがフランスの地元の人々を満足させるものです。</p>



 format( "d/m/yh:i");



<p>しかし、これには特定の国または地域を深く理解する必要があります。代わりに、日付をローカライズできます。日付をローカライズするには、PHPの国際化サポートをインストールする必要があります。 Ubuntuでは、このステップを実行できます。</p>



$ sudo apt-getインストールphp-intl



<p>フランス語で日付と時刻を表示するには、intldateformatterを使用できます。</p>



$ locale = "fr_fr.utf-8";
$ formatter = new intldateformatter($ locale、intldateformatter :: full、intldateformatter :: short、 "asia/singapore");
$ date = new DateTime( "2020-10-10 00:00 UTC");
echo $ formatter-> format($ date);



<p>intldateformatterの最初のパラメーターとしてフランスのロケールを渡します。<br> 2番目のパラメーターは、日付の形式です。 3番目のパラメーターは時間の形式です。日付と時刻を表示するタイムゾーンは4番目のパラメーターにあります。</p>



<p>intldateformatter :: full and intldateformatter :: short、その他の一般的に使用される形式には、intldateformatter :: noneおよびintldateformatter :: longが含まれます。<br>およびintldateformatter :: medium。</p>



<p>intldateformatter ::なしの時間または3番目のパラメーターを使用する場合、形式に時間を含めません。</p>



$ locale = "fr_fr.utf-8";
$ formatter = new intldateformatter($ locale、intldateformatter :: long、intldateformatter :: none、 "asia/singapore");
$ date = new DateTime( "2020-10-10 00:00 UTC");
echo $ formatter-> format($ date);


<h3>タイムトラベル</h3>


<p>旅行時間を過ごして、過去と未来に戻りましょう。まず、DateIntervalを理解しましょう:</p>



<p>PとTは、期間間隔と時間間隔を分離するために使用されます。これが私たちが未来に行く方法です:</p>



 format( "ymd");



<p>過去に戻る方法は次のとおりです。</p>



 format( "ymd h:i");



<p>タイムトラベルに曜日の名前を使用したい場合は、strtotime()関数のSttimestamp()メソッドとDateTimeオブジェクトを使用できます。</p>



 sittimestamp($ nexttuesday);
echo $ date-> format( "ymd");



<p>PHPドキュメントのstrtotime()パラメーターの完全なリストを参照してください。</p>


<h3>定期的に発生する日時</h3>


<p>カレンダーアプリケーションの一般的な機能は、2日間または週に1回など、繰り返しリマインダーを設定することです。 DatePeriodを使用して、期間を表すことができます。</p>



 format( "ymd")。
}

// 2022-10-01
// 2022-10-08
// 2022-10-15
// 2022-10-22
// 2022-10-29


<h3>何日前?</h3>


<p>Twitterのようなサービスが誰かのx分/日/日などを示すことをご存知ですか?これは、現在の時間と操作が発生する時間の間の経過時間を計算することで行うことができます。</p>



 diff($ startdate);

  if($ dateinterval-> invert == 1){
    if($ dateinterval-> y> 0){
      $ dateinterval-> yを返します。
    } if($ dateinterval-> m> 0){
      $ dateinterval-> mを返します。
    } if($ dateinterval-> d> 7){
      return(int)($ dateinterval-> d / 7)。
    } if($ dateinterval-> d> 0){
      $ dateinterval-> dを返します。
    }
  }
}

echo get_period_ago($ date、$ date2);
echo get_period_ago($ date、$ date3);
echo get_period_ago($ date、$ date4);
echo get_period_ago($ date、$ date5);



<p>Diff()メソッドからDateIntervalオブジェクトを取得した後、$ startDate変数が逆プロパティをチェックすることにより、過去にあることを確認してください。次に、Y、M、およびDプロパティを確認します。</p>



<p>DateIntervalオブジェクトのプロパティの完全なリストは、PHPドキュメントに記載されています。</p>


<h3>次のステップ?</h3>


<p>これで、日付と時間を扱うときに一般的に使用されるいくつかのPHPコードスニペットを習得しました。現在の日付と時刻を取得する必要がありますか?日付を何らかの形でフォーマットするか、ローカルタイムゾーンを含めるか、日付を比較する必要があるかもしれません。これはすべてここにあります!</p>



<p>もちろん、カレンダー関連の関数など、日付と時間に関するより多くの方法と機能については説明していません。より多くのユースケースと例については、いつでもPHPマニュアルの日付と時刻のセクションを確認してください。</p>

以上がPHPの日付と時刻のレシピの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。