shooroop Posted April 9, 2020 Report Share Posted April 9, 2020 (edited) Не пойму где ошибка {assign var="date1" value= $smarty.now+1*24*60*60} {assign var="date2" value= $smarty.now+30*24*60*60} {assign var="dateDiff" value=$date2 - $date1} {$dateDiff|date_format:'%d'} выводит 30 хотя должно 29 почему? Edited April 9, 2020 by shooroop Quote Link to post Share on other sites
chocolate_moles Posted April 9, 2020 Report Share Posted April 9, 2020 выводит 30 хотя должно 29 почему? Потому что вы используете формат даты, где 86400 секунд разницы это не 1 день, а 02 день месяца Quote Link to post Share on other sites
shooroop Posted April 9, 2020 Author Report Share Posted April 9, 2020 Потому что вы используете формат даты, где 86400 секунд разницы это не 1 день, а 02 день месяца Честно не понимаю 86400 - это сутки как и 24*60*60. Можешь указать на ошибку? Quote Link to post Share on other sites
chocolate_moles Posted April 9, 2020 Report Share Posted April 9, 2020 (edited) Честно не понимаю 86400 - это сутки как и 24*60*60. Можешь указать на ошибку? В вашем примере получилось 2505600 секунд, что равняется 29 дням, но вы конвертируете его в день даты, которая является 30 января 1970 года, отсюда и число 30. Как вариант решения, результат нужно поделить на 24*60*60 {assign date1 $smarty.now + 1*24*60*60} {assign date2 $smarty.now + 30*24*60*60} {assign var = "dateDiff" value = ($date2-$date1)/24/60/60} Edited April 9, 2020 by chocolate_moles Quote Link to post Share on other sites
shooroop Posted April 9, 2020 Author Report Share Posted April 9, 2020 В вашем примере получилось 2505600 секунд, что равняется 29 дням, но вы конвертируете его в день даты, которая является 30 января 1970 года, отсюда и число 30. Как вариант решения, результат нужно поделить на 24*60*60 {assign date1 $smarty.now + 1*24*60*60} {assign date2 $smarty.now + 30*24*60*60} {assign var = "dateDiff" value = ($date2-$date1)/24/60/60} а не вычесть - 86400 ? тогда будет 29 Quote Link to post Share on other sites
chocolate_moles Posted April 10, 2020 Report Share Posted April 10, 2020 а не вычесть - 86400 ? тогда будет 29 В текущем примере можно и вычесть, а если вторая дата будет +34, то при вычитании у вас получится 2, а не ожидаемые 33. Вам для чего все эти вычисления то? Quote Link to post Share on other sites
shooroop Posted April 10, 2020 Author Report Share Posted April 10, 2020 В текущем примере можно и вычесть, а если вторая дата будет +34, то при вычитании у вас получится 2, а не ожидаемые 33. Вам для чего все эти вычисления то? Вывод отображения числа сколько времени осталось отображать товар на сайте. Максимальное количество дней жизни товара 30. Quote Link to post Share on other sites
segment Posted April 11, 2020 Report Share Posted April 11, 2020 потому что дата начинается в 0:00:00:000То есть день еще не прошел Quote Link to post Share on other sites
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.