PHPで現在の日時を取得するにはどうすればよいですか?


回答:


623

時間はサーバーの時間によって決まります。これの簡単な回避策はdate_default_timezone_setdate()またはtime()関数が呼び出される前にを使用してタイムゾーンを手動で設定することです。

私はオーストラリアのメルボルンにいるので、次のようなものがあります。

date_default_timezone_set('Australia/Melbourne');

または別の例はLA- USです。

date_default_timezone_set('America/Los_Angeles');

サーバーが現在どのタイムゾーンにいるかも確認できます。

date_default_timezone_get();

したがって、次のようなもの:

$timezone = date_default_timezone_get();
echo "The current server timezone is: " . $timezone;

だからあなたの質問の短い答えは次のようになります:

// Change the line below to your timezone!
date_default_timezone_set('Australia/Melbourne');
$date = date('m/d/Y h:i:s a', time());

次に、すべての時間は、設定したタイムゾーンになります:)


101
time()の呼び出しは冗長です。date()は自動的に現在の時刻を使用します。
phpが多すぎる

11
OPはタイムゾーンについて尋ねたことはありません。より単純でより正しい答えは、単にサーバー時間を示します。
AyexeM 2014

43
@AyexeM私は実際に追加のタイムゾーン情報を高く評価しました。それは私に2番目の検索を保存しました。
Marquizzo、2014年

5
ここからすべてのタイムゾーンを取得できます。タイムゾーン
Yousef Altaf

13
@AyexeMより単純でより正確な答えは、潜在的に重要な関連情報を省略するのではなく、提案どおりに質問に答えることですが、その下のタイムゾーンに関する追加情報を提供します。求められなかったからといって、潜在的に重要な情報を省略する必要はありません。
ジェイミー

524
// Simply:
$date = date('Y-m-d H:i:s');

// Or:
$date = date('Y/m/d H:i:s');

// This would return the date in the following formats respectively:
$date = '2012-03-06 17:33:07';
// Or
$date = '2012/03/06 17:33:07';

/** 
 * This time is based on the default server time zone.
 * If you want the date in a different time zone,
 * say if you come from Nairobi, Kenya like I do, you can set
 * the time zone to Nairobi as shown below.
 */

date_default_timezone_set('Africa/Nairobi');

// Then call the date functions
$date = date('Y-m-d H:i:s');
// Or
$date = date('Y/m/d H:i:s');

// date_default_timezone_set() function is however
// supported by PHP version 5.1.0 or above.

タイムゾーンのリファレンスについては、サポートされているタイムゾーンのリストを参照してください。


12
これは、トップの答えよりもはるかに簡単な答えです。ありがとう!
dev_willis 2015年

1
サポートされているタイムゾーンのリンクをありがとう、私はそれをグーグル化しようとしていた:)
htafoya

190

PHPなので5.2.0、次のDateTime()クラスを使用できます。

use \Datetime;

$now = new DateTime();
echo $now->format('Y-m-d H:i:s');    // MySQL datetime format
echo $now->getTimestamp();           // Unix Timestamp -- Since PHP 5.3

そして指定するにはtimezone

$now = new DateTime(null, new DateTimeZone('America/New_York'));
$now->setTimezone(new DateTimeZone('Europe/London'));    // Another way
echo $now->getTimezone();

2
これは良い答えですが、呼び出す前に\ Datetimeを使用する必要があることを忘れていました:) ty
Amor.o

@ Amor.oお知らせありがとうございます。回答を更新しました-少し遅れて、正直に言って、コメントの通知が届かなかったようです。Datatime名前空間の使用について。それが2013年のことで、PHPコードを何年も書いていないのか覚えていません。とにかく、あなたの提案は正しいようですので、もう一度感謝します。
Mahdi

:)
Amor.o

95

参照:ここにリンクがあります

これは、夏時間のため、タイムスタンプに1日または1か月の秒数を単純に加算または減算するよりも信頼性が高くなります。

PHPコード

// Assuming today is March 10th, 2001, 5:16:18 pm, and that we are in the
// Mountain Standard Time (MST) Time Zone

$today = date("F j, Y, g:i a");                 // March 10, 2001, 5:16 pm
$today = date("m.d.y");                         // 03.10.01
$today = date("j, n, Y");                       // 10, 3, 2001
$today = date("Ymd");                           // 20010310
$today = date('h-i-s, j-m-y, it is w Day');     // 05-16-18, 10-03-01, 1631 1618 6 Satpm01
$today = date('\i\t \i\s \t\h\e jS \d\a\y.');   // it is the 10th day.
$today = date("D M j G:i:s T Y");               // Sat Mar 10 17:16:18 MST 2001
$today = date('H:m:s \m \i\s\ \m\o\n\t\h');     // 17:03:18 m is month
$today = date("H:i:s");                         // 17:16:18
$today = date("Y-m-d H:i:s");                   // 2001-03-10 17:16:18 (the MySQL DATETIME format)

確かに最高です
Yash Kumar Verma

67

PHPのtime()は、現在のUnixタイムスタンプを返します。これにより、date()関数を使用してニーズに合わせてフォーマットできます。

$date = date('Format String', time());

Paoloがコメントで述べたように、2番目の引数は冗長です。次のスニペットは、上記のものと同等です。

$date = date('Format String');

17
空のままにした場合、日付関数の2番目の引数はtime()と見なされます。
Paolo Bergantino、

66

あなたはどちらかを使用することができ$_SERVER['REQUEST_TIME']、変数(PHP 5.1.0以降で利用可能)、またはtime()機能を、現在のUnixタイムスタンプを取得します。


1
time()関数から返されるタイムスタンプはタイムゾーンに依存しないことに注意してください。(したがって、date_default_timezone_set("your-particular-timezone");beforeを呼び出しても効果はありません。)
ban-geoengineering

@ ban-geoengineering-「タイムゾーンに依存しない」という意味がわかりません。サーバーが設定されているタイムゾーンに「依存」していますか?東海岸のサーバーを西海岸のタイムゾーンに設定することも、その逆も可能です。
ニールデイビス

56

$_SERVER['REQUEST_TIME']変数またはtime()関数の両方を使用できます。これらは両方ともUnixタイムスタンプを返します。

ほとんどの場合、これら2つのソリューションはまったく同じUnixタイムスタンプを生成します。これらの違い$_SERVER['REQUEST_TIME']は、最新のサーバー要求のタイムスタンプをtime()返し、現在の時刻を返すことです。これにより、アプリケーションによっては精度にわずかな違いが生じる可能性がありますが、ほとんどの場合、これら両方のソリューションで十分です。

上記のサンプルコードに基づいて、Unix Timestampを取得したら、この情報をフォーマットする必要があります。未フォーマットのUnix時間は次のようになります。1232659628

そのため、date()機能するものを取得するために、関数を使用してフォーマットできます。

date()関数の使用方法についての適切なリファレンスは、PHPマニュアルにあります。

例として、次のコードは次のような日付を返します01/22/2009 04:35:00 pm

echo date("m/d/Y h:i:s a", time());

異なるWebサーバーはどのように処理し$_SERVER['REQUEST_TIME'] ますか?
Pacerier、2015年

最良の答えは手に負えない。UNIXタイムスタンプから通常の人の日付に取得する方法を追加することもできます。これは、高く評価されています
Kolob Canyon

45

PHPの日付関数はこの仕事をすることができます。

日付()

説明:

string date(string $format [, int $timestamp = time()])

指定された整数タイムスタンプを使用して、またはタイムスタンプが指定されていない場合は現在の時刻を使用して、指定されたフォーマット文字列に従ってフォーマットされた文字列を返します。

例:

$today = date("F j, Y, g:i a");               // March 10, 2001, 5:16 pm
$today = date("m.d.y");                       // 03.10.01
$today = date("j, n, Y");                     // 10, 3, 2001
$today = date("Ymd");                         // 20010310
$today = date('h-i-s, j-m-y, it is w Day');   // 05-16-18, 10-03-01, 1631 1618 6 Satpm01
$today = date('\i\t \i\s \t\h\e jS \d\a\y.'); // it is the 10th day.
$today = date("D M j G:i:s T Y");             // Sat Mar 10 17:16:18 MST 2001
$today = date('H:m:s \m \i\s\ \m\o\n\t\h');   // 17:03:18 m is month
$today = date("H:i:s");                       // 17:16:18
$today = date("Y-m-d H:i:s");                 // 2001-03-10 17:16:18 (the MySQL DATETIME format)

27
 $date = new DateTime('now', new DateTimeZone('Asia/Kolkata'));
 echo $date->format('d-m-Y H:i:s');

更新

 //Also get am/pm in datetime:
 echo $date->format('d-m-Y H:i:s a'); // output 30-12-2013 10:16:15 am

日付形式については、PHPのdate()関数が役立ちます。



25

新しいPHPプログラマーにとって、現在の日付と時刻を取得するための多くの方法があり、どの方法をプロジェクトで使用するのかを混乱させる可能性があります。

1. dateメソッド(PHP 4、PHP 5、PHP 7)

これは、phpで日付と時刻を取得するための非常に一般的で非常に簡単な方法です。

// set the default timezone to use. Available since PHP 5.1
date_default_timezone_set('UTC');


// Prints something like: Monday
echo date("l");

// Prints something like: Monday 8th of August 2005 03:12:46 PM
echo date('l jS \of F Y h:i:s A');

// Prints: July 1, 2000 is on a Saturday
echo "July 1, 2000 is on a " . date("l", mktime(0, 0, 0, 7, 1, 2000));

/* use the constants in the format parameter */
// prints something like: Wed, 25 Sep 2013 15:28:57 -0700
echo date(DATE_RFC2822);

// prints something like: 2000-07-01T00:00:00+00:00
echo date(DATE_ATOM, mktime(0, 0, 0, 7, 1, 2000));

あなたはそれについてここでもっと学ぶことができます

2. DateTimeクラス(PHP 5> = 5.2.0、PHP 7)

OOPでPHPを使用する場合、これは日付と時刻を取得するための最良の方法です。

<?php
// Specified date/time in your computer's time zone.
$date = new DateTime('2000-01-01');
echo $date->format('Y-m-d H:i:sP') . "\n";

// Specified date/time in the specified time zone.
$date = new DateTime('2000-01-01', new DateTimeZone('Pacific/Nauru'));
echo $date->format('Y-m-d H:i:sP') . "\n";

// Current date/time in your computer's time zone.
$date = new DateTime();
echo $date->format('Y-m-d H:i:sP') . "\n";

// Current date/time in the specified time zone.
$date = new DateTime(null, new DateTimeZone('Pacific/Nauru'));
echo $date->format('Y-m-d H:i:sP') . "\n";

// Using a UNIX timestamp.  Notice the result is in the UTC time zone.
$date = new DateTime('@946684800');
echo $date->format('Y-m-d H:i:sP') . "\n";

// Non-existent values roll over.
$date = new DateTime('2000-02-30');
echo $date->format('Y-m-d H:i:sP') . "\n";
?>

あなたはそれについてここでもっと学ぶことができます

3.カーボンデートタイムパッケージ

ComposerLaravelSymfonyなどのフレームワークを使用している場合、これは日付と時刻を取得するための最良の方法です。また、このパッケージはPHPのDateTimeクラスを拡張するため、Datetimeクラスのすべてのメソッドを使用します。これはlaravelなどのフレームワークに組み込まれているため、個別にインストールする必要はありません。

printf("Right now is %s", Carbon::now()->toDateTimeString());
printf("Right now in Vancouver is %s", Carbon::now('America/Vancouver')); // automatically converted to string
$tomorrow = Carbon::now()->addDay();
$lastWeek = Carbon::now()->subWeek();

// Carbon embed 823 languages:
echo $tomorrow->locale('fr')->isoFormat('dddd, MMMM Do YYYY, h:mm');
echo $tomorrow->locale('ar')->isoFormat('dddd, MMMM Do YYYY, h:mm');

$officialDate = Carbon::now()->toRfc2822String();

$howOldAmI = Carbon::createFromDate(1975, 5, 21)->age;

$noonTodayLondonTime = Carbon::createFromTime(12, 0, 0, 'Europe/London');

$internetWillBlowUpOn = Carbon::create(2038, 01, 19, 3, 14, 7, 'GMT');

if (Carbon::now()->isWeekend()) {
    echo 'Party!';
}
echo Carbon::now()->subMinutes(2)->diffForHumans(); // '2 minutes ago'

あなたはそれについてここでもっと学ぶことができます

これがお役に立てば幸いです。日付と時刻を取得する他の方法がわかっている場合は、回答を自由に編集してください。


カスタムテキストでも文字列をフォーマットする方法や、MySQLなどに最適なフォーマットを示す他のいくつかの回答が好きでしたが、手続き型、オブジェクト指向、OOPフレームワークの3つすべてのタイプと使用法を示すためにこれを間違いなく受け入れます。
s3c

1
@ s3c私はそのような何かに答えることができましたが、質問は「PHPで現在の日時を取得するにはどうすればよいですか?」であり、主な焦点はこの質問にあるはずです。:)
Supun Praneeth

21

使用する:

$date = date('m/d/Y h:i:s a', time());

できます。


私が意味するのは、私がPSTになるとESTが戻ってくるときです... サーバー時間であり、サーバーはESTですか?ユーザーに時間をとることはできますか?彼らのサーバーは別のタイムゾーンかもしれませんね?

日付関数は、サーバーの時刻です。日付を実行する前に、チェックするか、一時的に/ w PHPに設定してください。
TravisO 2009年

おかげで、OはGMTで機能しますが、Pまたは "e"タイムゾーンでは機能しないため、私のサービスはphpで最新の状態にしてはなりません...ありがとうございます。

この$ date = date( 'm / d / Y h:i:s a'、time()); サーバーの日付を取得しますが、ユーザーの日付はまだ取得していません。これは私がPSTにいるときにESTで私を見せています。ユーザーがフォームを送信した日付を取得したいのですが、私のようにサーバーが別のタイムゾーンにある可能性があります。

実際、私はそれについて考えていますが、時間は日付ほど重要ではありません。ありがとうございます!!

18
echo date("d-m-Y H:i:sa");

このコードは、コードが実行されているサーバーの日付と時刻を取得します。


1
誤解を招く答えに反対票を投じました。いいえ、サーバーをローカルで実行していない限り、ローカルマシンの時刻は取得されません。サーバーの日付と時刻を取得します。
MattWithoos 2017

@MattWithoos-「このコードは、彼が言った「ローカルマシン」について何も言わなかった「サーバー」の日付と時刻を取得します。サーバーを「ローカル」で実行する必要もありません-サーバーを持つことができます。世界中のどこでも、好きなタイムゾーンに設定します。反対票はまったくの理由もなく、正解ではありませんでした
ニールデイビス

1
@NealDavis編集を見たと思いましたか?私はそのコメントを投稿し、誤った情報の編集を提案し、その間それが承認されるのを待ちました。これで承認され、正しい情報が表示されます。
MattWithoos 2018年

1
@NealDavisさらに、元の投稿を読みたくなかった場合、文字通り「このコードはローカルマシン(PC)の日付と時刻を取得します」と言っていました。それは全く誤解を招くものです。
MattWithoos 2018年


14

PHPを使用して現在の日時を取得する方法(NOW)の記事によると、現在の日付を取得する一般的な方法は2つあります。PHPで現在の日時(現在)を取得するにはdate、任意のPHPバージョンでクラスを使用するかdatetime、PHP> = 5.2でクラスを使用できます。

ここでは、さまざまな日付形式の式を使用できます。

日付を使用した例

この式は、NOWをフォーマットで返しますY-m-d H:i:s

<?php
    echo date('Y-m-d H:i:s');
?>

日時クラスの使用例

この式は、NOWをフォーマットで返しますY-m-d H:i:s

<?php
    $dt = new DateTime();
    echo $dt->format('Y-m-d H:i:s');
?>

13
<?php
echo "<b>".date('l\, F jS\, Y ')."</b>";
?>

このようなプリント

2012年12月9日日曜日


12
<?php
// Assuming today is March 10th, 2001, 5:16:18 pm, and that we are in the
// Mountain Standard Time (MST) Time Zone

$today = date("F j, Y, g:i a");                 // March 10, 2001, 5:16 pm
$today = date("m.d.y");                         // 03.10.01
$today = date("j, n, Y");                       // 10, 3, 2001
$today = date("Ymd");                           // 20010310
$today = date('h-i-s, j-m-y, it is w Day');     // 05-16-18, 10-03-01, 1631 1618 6 Satpm01
$today = date('\i\t \i\s \t\h\e jS \d\a\y.');   // it is the 10th day.
$today = date("D M j G:i:s T Y");               // Sat Mar 10 17:16:18 MST 2001
$today = date('H:m:s \m \i\s\ \m\o\n\t\h');     // 17:03:18 m is month
$today = date("H:i:s");                         // 17:16:18
$today = date("Y-m-d H:i:s");                   // 2001-03-10 17:16:18 (the MySQL DATETIME format)
?>

11

タイムゾーンを設定します。

date_default_timezone_set('Asia/Calcutta');

次に、日付関数を呼び出します

$date = date('Y-m-d H:i:s');

11
date(format, timestamp)

このdate関数は、指定された整数タイムスタンプを使用して、またはタイムスタンプが指定されていない場合は現在の時刻を使用して、指定されたフォーマット文字列に従ってフォーマットされた文字列を返します。つまり、これtimestampはオプションであり、デフォルトでtime()の値になります。

そしてパラメータは-

フォーマット-必須。タイムスタンプの形式を指定します

timestamp-(オプション)タイムスタンプを指定します。デフォルトは現在の日時です

簡単な日付を取得する方法

date()関数の必須のformatパラメータは、をフォーマットする方法を指定しますdate (or time)

次に、日付に一般的に使用されるいくつかの文字を示します。

  1. d-月の日を表します(01から31)
  2. m-月を表します(01から12)
  3. Y-年を表します(4桁)
  4. l(小文字の「L」)-曜日を表します

文字"/", ".", or "-"間に他の文字を挿入して、書式を追加することもできます。

以下の例は、3つの異なる方法で今日の日付をフォーマットします。

<?php
    echo "Today is " . date("Y/m/d") . "<br>";
    echo "Today is " . date("Y.m.d") . "<br>";
    echo "Today is " . date("Y-m-d") . "<br>";
    echo "Today is " . date("l");
?>

いくつかの便利なリンク


10

別のタイムスケールが必要な場合は、以下を使用してください。

$tomorrow  = mktime(0, 0, 0, date("m")  , date("d")+1, date("Y"));
$lastmonth = mktime(0, 0, 0, date("m")-1, date("d"),   date("Y"));
$nextyear  = mktime(0, 0, 0, date("m"),   date("d"),   date("Y")+1);

date_default_timezone_set("Asia/Calcutta");
echo date("Y/m/d H:i:s");

「タイムスケール」とはどういう意味ですか?
Peter Mortensen

「タイムゾーン」でしょう。
サニーム2014年

2
私はなど、月バック、あなたが一日先に時間を調整したい場合は@Jayminを意味するかもしれないと考えている
単なるハイ

10
date_default_timezone_set('Europe/Warsaw');
echo("<p class='time'>".date('H:i:s')."</p>");
echo("<p class='date'>".date('d/m/Y')."</p>");


10

次のコードを使用できます。

<?php
    $currentDateTime = date('Y-m-d H:i:s');
    echo $currentDateTime;
?>

9

PHPで現在の時刻を取得する最も簡単な方法は、このようなものであることがわかりました。

//Prints out something like 10:00am Just be sure to set your timezone correctly.
date_default_timezone_set("America/Chicago");
$TIME = date('G:ia'); 

8

別の簡単な方法は、現在の日付と時刻のタイムスタンプを取得することです。mktime()関数を使用します。

$now = mktime(); // Return timestamp of the current time

次に、これを別の日付形式に変換できます。

//// Prints something like: Thursday 26th of January 2017 01:12:36 PM
echo date('l jS \of F Y h:i:s A',$now);

その他の日付形式はこちら:http : //php.net/manual/en/function.date.php



6
// Set the default timezone to use. Available since PHP 5.1
date_default_timezone_set('UTC');


// Prints something like: Monday
echo date("l");

// Prints something like: Monday 8th of August 2016 03:12:46 PM
echo date('l jS \of F Y h:i:s A');

// Prints: July 1, 2016 is on a Saturday
echo "July 1, 2016 is on a " . date("l", mktime(0, 0, 0, 7, 1, 2016));

/* Use the constants in the format parameter */
// Prints something like: Wed, 25 Sep 2013 15:28:57 -0700
echo date(DATE_RFC2822);

// Prints something like: 2016-07-01T00:00:00+00:00
echo date(DATE_ATOM, mktime(0, 0, 0, 7, 1, 2000));

6

あなたがバングラデシュ人で、ダッカの時間を知りたいのなら、これを使ってください:

$date = new DateTime();
$date->setTimeZone(new DateTimeZone("Asia/Dhaka"));
$get_datetime = $date->format('d.m.Y H:i:s');

6

通常、この日付の関数は誰にとっても便利です:date( "Y / m / d");

しかし、time関数はPHPのバージョンまたはシステムの日付に依存するため、時間は多少異なります。

したがって、おそらく次のように使用して、独自のタイムゾーンを取得します。

$date = new DateTime('now', new DateTimeZone('Asia/Kolkata'));
echo $date->format('H:m:s');

この機能は24時間の時間を表示します。


それは私のために日付を1970に設定しました!
iKamy

5

以下は、時間によく使用されるいくつかの文字です。

  1. h-先行ゼロ付きの1時間の12時間形式(01から12)
  2. i-先行ゼロ付きの分(00から59)
  3. s-先行ゼロ付きの秒(00から59)
  4. a-小文字のアンティ子午線とポスト子午線(午前または午後)

タイムゾーンを取得する

<?php
    date_default_timezone_set("America/New_York");
    echo "The time is " . date("h:i:sa");
?>

これをチェックしてください(オプション)

<?php
    $d = mktime(11, 14, 54, 8, 12, 2014);
    echo "Created date is " . date("Y-m-d h:i:sa", $d);
?>

日付について

<?php
    echo "Today is " . date("Y/m/d") . ;
    echo "Today is " . date("Y.m.d") . ;
    echo "Today is " . date("Y-m-d") . ;
    echo "Today is " . date("l");
?>

次に、日付に一般的に使用されるいくつかの文字を示します。

  1. d-月の日を表します(01から31)
  2. m-月を表します(01から12)
  3. Y-年を表します(4桁)
  4. l(小文字の「L」)-曜日を表します

Source-W3-Schools


1
末尾の目的は何である.ではdate("Y/m/d") . ;
Peter Mortensen

別の文字列または変数を連結するには、私は推測します。編集ありがとうございます。:-)
Raheel Khan
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.