2016-03-21 32 views
-1

私は、次のPHPコードを実行すると:PHPの日付時刻オブジェクト形式

$this_year_start = strtotime(new DateTime("first day of this year")->format('d/m/Y')); 
$this_year_end = strtotime(new DateTime("last day of this year")->format('d/m/Y')); 

を私は次のエラーを取得する:

PHP Parse error: syntax error, unexpected '->' (T_OBJECT_OPERATOR) in /home/admin/data.php on line 164 

私は今年のスタートのUNIX時刻を取得したいです今年の終わりです。しかし、これはいくつかの問題のフォーマットを持ち、それをUNIX時間に変換するようです。

+0

が、私はそれを疑います"今年の最初の日"が議論として受け入れられます。 – fusion3k

答えて

1

strtotime()はUnixのタイムスタンプを出力します。必要なのは変換する文字列だけです。

"yesterday"や "march 15th 1991"のようなstrtotime()の日付のテキスト形式を使用することができます。あなたは、単にstrtotime()文字列に「1月1日」と「12月31日」に入れることができるようにあなたは、開始日と終了日を知っている、現在の年を取得するには

$this_year_start = strtotime('Jan 01'); 
$this_year_end = strtotime('Dec 31'); 

この2つの値が出力されます:

終了日については

1451624400

1483160400

あなたが来年の前に、最終的な秒をやってみたかった場合、あなたは、それを1日少ない1秒を追加することができます。

$this_year_end = strtotime("Dec 31") + (60 * 60 * 24) - 1; 
1

年は1月1日00:00:00から始まり、12月31日23:59.59で終了します。

我々は(それが秒を使用しています)、タイムスタンプなどの答えを必要とするように精度のために、あなたはあまりにも時間が適用され、このような何かを行う必要があります。

// mktime(hour, minute, second, month, day, year) 
$this_year_start = mktime(0, 0, 0, 1, 1, date('Y')); 
$this_year_end = mktime(23, 59, 59, 12, 31, date('Y')); 
-1

これは

$s = new DateTime("first day of this year"); 
$l = new DateTime("last day of this year"); 

echo 'First Day = ' . $s->format('d/m/Y'). PHP_EOL; 
echo 'Last Day = ' . $l->format('d/m/Y'). PHP_EOL; 
echo 'First Timestamp = ' . $s->getTimestamp(). PHP_EOL; 
echo 'Last Timestamp = ' . $l->getTimestamp(). PHP_EOL; 

と出力を動作します

First Day = 01/01/2016 
Last Day = 31/12/2016 
First Timestamp = 1451606400 
Last Timestamp = 1483142400 

もちろん、すべてを一緒に実行したい場合は、タイムスタンプが生成されますあなたはこのように、括弧でそれらをラップする必要が新しい作成されたオブジェクトをインラインアクセスしたい場合に電子()

$this_year_start = (new DateTime("first day of this year"))->getTimestamp(); 
$this_year_end = (new DateTime("last day of this year"))->getTimestamp(); 
+0

ランダムドライブバイダウン投票や理由があった – RiggsFolly

+0

私はダウンボートしませんでしたが、タイムスタンプが必要なので、 ' - > format(...)'を ' - > getTimestamp()'に置き換えてください。 –

+1

@CharlotteDunoisちょっと気付いたので、 ' - > getTimestamp()'を追加しました。 – RiggsFolly

2

の使用は:

$this_year_start = strtotime((new DateTime("first day of this year"))->format('d/m/Y')); 
          ^         ^
          |          | 

をしかし、これは、以前のバージョンではオプションではありませんPHP。それを行うための安全な方法は、オブジェクトを作成し、それを変数に代入し、次にような新しい作成された変数からこれらのメソッドにアクセスすることです:date_create` `と`新しいDatetime`を交換し

$date = new DateTime("first day of this year"); 
$this_year_start = strtotime($date->format('d/m/Y')); 
関連する問題