2016-12-14 5 views
0

私は任意の日から1ヶ月の残りの日数を計算しようとしています。 31 - - 1から30PHPの日付()の問題 - 月の残りの日

私もそれが( 'D'、$タイムスタンプ)日付を試みたが、している 2016年12月14日:

<?php 
date_default_timezone_set("UTC"); 
echo $timestamp = date('Y-m-d'); 
echo " - "; 
echo $daysInMonth = (int)date('t', $timestamp); 
echo " - "; 
echo $thisDayInMonth = (int)date('j', $timestamp); 
echo " - "; 
echo $daysRemaining = $daysInMonth - $thisDayInMonth; 
?> 

出力は次のとおりです。私は、次のコードを持っています14日であるにもかかわらず、現在の日に1を返します。なぜ今日は1日になるのですか?ありがとう。

私のPHPのバージョンは5.4.45です。

+0

'$ timestamp = date( 'Y-m-d')の代わりに' $ timestamp = time() 'を実行してください。 –

+0

代わりに' DateTime'を使用してください。 https://3v4l.org/bLOO7 –

答えて

2

date関数が2番目のパラメータを整数値として必要とするため、strtotimeをtimestamp変数に追加するだけです。しかし、フォーマットされた日付を指定すると、文字列と見なされます。

date_default_timezone_set("UTC"); 
echo $timestamp = date('Y-m-d'); 
echo " - "; 
echo $daysInMonth = (int)date('t', strtotime($timestamp)); 
echo " - "; 
echo $thisDayInMonth = (int)date('j', strtotime($timestamp)); 
echo " - "; 
echo $daysRemaining = $daysInMonth - $thisDayInMonth; 

出力:

2016-12-14 - 31 - 14 - 17 
0

PHPのDateTime classを使用するが、これは非常に簡単になります: -

$now = new \DateTime(); 
$daysRemaining = (int)$now->format('t') - (int)$now->format('d'); 

See it working