2016-12-14 1 views
0

Я пытаюсь рассчитать оставшиеся дни в месяц с любого дня. У меня есть следующий код:Проблема с PHP date() - оставшиеся дни в месяце

<?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; 
?> 

Выходной сигнал является: 2016-12-14 - 31 - 1 - 30

Я также попытался с датой ('D', $ метка времени), но все равно возвращает 1 на сегодняшний день, хотя ему должно быть 14. Почему я получаю 1 на сегодняшний день? Благодарю.

Моя версия PHP - 5.4.45.

+0

Попробуйте сделать '$ timestamp = time()' вместо '$ timestamp = date ('Y-m-d')' –

+0

Вместо этого используйте 'DateTime'. https://3v4l.org/bLOO7 –

ответ

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