2017-07-29 3 views
-4

phpのtime()関数は、現在のサーバの番号を出力します。 今日は昨日00時01分に番号を取得したいと思います。時間内に00:01の番号を見つける方法()楽しいPHP?

例: 時刻():現在のサーバーの番号を出力します。 time() - (1 * 24 * 60 * 60):昨日の番号を出力します。

しかし、今日の午前と昨日の00:01にこれらの数字が必要です。

どのようにですか?

+0

あなたの質問は明確ではありません – Ritz

+0

彼は '2017-07-29 00:01'と' 2017-07-28 00:01'を出力したいと思います。 – Andreas

+0

はあなたの質問とあなたのコードを説明してくれます。 –

答えて

0

これを試してください:

Echo date("Y-m-d ") . "00:01\n"; 
Echo date("Y-m-d ", strtotime("yesterday")) . "00:01"; 

Strtotimeは単純な文字列を読み取り、プラスまたはマイナスの時間に変換できます。
https://3v4l.org/bLOq3

0

@Andreasは良い方法がありますが、追加の文字列'00:01' は、適切ではないOPは、タイムスタンプ、すなわち_integer表現を望んでいるようになります。また、strtotime()は複数の単語を理解します。まず、設定されたタイムゾーン:秒数を返しますtime()

echo date('Y-m-d H:i:s', strtotime('yesterday midnight') + 1); // 2017-07-28 00:00:01 
echo date('Y-m-d H:i:s', strtotime('today midnight') + 1); // 2017-07-29 00:00:01 
+0

opにUNIX値が必要なのはわかりません。しかし、そうであれば、私の答えは簡単に修正することができます。また、私はstrtotimeが単一の言葉しか理解しないと言っていませんでした。 – Andreas

1

PHP機能:これは、と比較して、これらの2つのタイムスタンプ

strtotime('yesterday midnight') 
strtotime('yesterday midnight') + 1 

このプリントフォーマットされた日付文字列を取得します

date_default_timezone_set('UTC'); 

1970年1月1日00:00:00 UTC(別名Unix Epoch)以降に渡されました。サーバーの時計が正しい時間を示す限り、スクリプトが実行されているサーバーやサーバーのタイムゾーン、またはPHPが使用するデフォルトのタイムゾーンに関係なく、time()関数は同じ値を返します。

PHPは多くを提供しますfunctions to handle date & time。それらを見てから、それらのほとんどを忘れてください。あなたはそれらを必要としません。 date_で始まる名前は、DateTimeクラス(およびその友人)のメソッドの単なるエイリアスです。他のものは古いものであり、複数のタイムゾーンを処理しません。

のみいくつかの日付/時刻関数は、あなたが覚えておく必要がありますあります:time()(タイムスタンプを取得するには)、date()DateTimeオブジェクトを作成する関数によって認識入力フォーマットについて学ぶために、日付とstrtotime()をフォーマットする方法を学びます。

今は00:01と昨日の数字を取得したいと思います。

00:01は深夜1分後です。それは00:01今日だった時に瞬間をカプセル化するDateTimeオブジェクトを作成するのは簡単です:

$today = new DateTime('00:01'); 

DateTime::__construct()の最初の引数は作成するstring representation of the dateです。日付が完了していない場合、欠落している日付コンポーネントは今日の日付で初期化され、欠落している時間コンポーネントは0で初期化されます。

DateTimeオブジェクトを「昨日00:01」に作成する方法はいくつかあります。最も簡単な1はちょうどコンストラクタに渡された文字列でそれを表明することにある。

$yesterday = new DateTime('yesterday 00:01'); 

別のオプションは、それから$todayと同じとsubtract一日、それを作成することです:

$yesterday = new DateTime('00:01'); 
$yesterday->modify("-1 day"); 

を見てみましょう我々は何を得る:

echo('Today : '.$today->format('Y-m-d H:i:s e')); 
echo('Yesterday: '.$yesterday->format('Y-m-d H:i:s e')); 

それは出力します。

Today : 2017-07-29 00:01:00 Europe/Bucharest 
Yesterday: 2017-07-28 00:01:00 Europe/Bucharest 

おそらく異なるタイムゾーンを表示します。これは、最初の引数として渡された文字列にタイムゾーンが含まれておらず、DateTime::__construct()に2番目の引数を渡していないためです。この場合、PHPはデフォルトのタイムゾーンを使用します(php.iniまたはdate_default_timezone_set()関数を使用して設定されています)。

DateTime::__construct()に2番目の引数としてDateTimeZoneオブジェクトを渡すまたはスクリプトの起動時にデフォルトのタイムゾーンを設定する機能date_default_timezone_set()を使用するか、コードがすべてのサーバーで同じように動作することを確認します。

関連する問題