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

PHPの日付と時刻のレシピ

Mar 17, 2025 am 09:30 AM

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 id="特定の時間のためにDateTimeオブジェクトを構築します">特定の時間のために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 id="タイムゾーン">タイムゾーン</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 id="ローカリゼーション">ローカリゼーション</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 id="タイムトラベル">タイムトラベル</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 id="定期的に発生する日時">定期的に発生する日時</h3>


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



 format( "ymd")。
}

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


<h3 id="何日前">何日前?</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 id="次のステップ">次のステップ?</h3>


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



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

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

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

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Vue 3 Vue 3 Apr 02, 2025 pm 06:32 PM

それは&#039; Vueチームにそれを成し遂げてくれておめでとうございます。それは大規模な努力であり、長い時間がかかったことを知っています。すべての新しいドキュメントも同様です。

ブラウザから有効なCSSプロパティ値を取得できますか? ブラウザから有効なCSSプロパティ値を取得できますか? Apr 02, 2025 pm 06:17 PM

私はこの非常に正当な質問で誰かに書いてもらいました。 Leaは、ブラウザから有効なCSSプロパティ自体を取得する方法についてブログを書いています。それはこのようなものです。

CI/CDで少し CI/CDで少し Apr 02, 2025 pm 06:21 PM

「ウェブサイト」は「モバイルアプリ」よりも適していると言いますが、Max Lynchからのこのフレーミングが好きです。

粘着性のあるポジショニングとサスのダッシュを備えた積み重ねられたカード 粘着性のあるポジショニングとサスのダッシュを備えた積み重ねられたカード Apr 03, 2025 am 10:30 AM

先日、Corey Ginnivanのウェブサイトから、この特に素敵なビットを見つけました。そこでは、スクロール中にカードのコレクションが互いに積み重ねられていました。

WordPressブロックエディターでのマークダウンとローカリゼーションを使用します WordPressブロックエディターでのマークダウンとローカリゼーションを使用します Apr 02, 2025 am 04:27 AM

WordPressエディターでユーザーに直接ドキュメントを表示する必要がある場合、それを行うための最良の方法は何ですか?

レスポンシブデザインのブラウザを比較します レスポンシブデザインのブラウザを比較します Apr 02, 2025 pm 06:25 PM

これらのデスクトップアプリがいくつかあり、目標があなたのサイトをさまざまな次元ですべて同時に表示しています。たとえば、書くことができます

フレックスレイアウト内の紫色のスラッシュ領域が誤って「オーバーフロー空間」と見なされるのはなぜですか? フレックスレイアウト内の紫色のスラッシュ領域が誤って「オーバーフロー空間」と見なされるのはなぜですか? Apr 05, 2025 pm 05:51 PM

フレックスレイアウトの紫色のスラッシュ領域に関する質問フレックスレイアウトを使用すると、開発者ツールなどの混乱する現象に遭遇する可能性があります(D ...

CSSを介してファーストクラスの名前アイテムを使用して子要素を選択する方法は? CSSを介してファーストクラスの名前アイテムを使用して子要素を選択する方法は? Apr 05, 2025 pm 11:24 PM

要素の数が固定されていない場合、CSSを介して指定されたクラス名の最初の子要素を選択する方法。 HTML構造を処理するとき、あなたはしばしば異なる要素に遭遇します...

See all articles