Как внести изменения в дату и время?

Я хочу повторить какое-то свидание только тогда, когда они ближе, как.

Я создал один скрипт и использовал следующий код.

$now = new DateTime(null, new DateTimeZone('UTC'));
$todaydate=$now->format('Y-m-d H:i:s');
$expdate="2020-09-13 21:00:00";

function format_interval(DateInterval $interval) {
$result = "";
if ($interval->y) { $result .= $interval->format("%y years "); }
if ($interval->m) { $result .= $interval->format("%m months "); }
if ($interval->d) { $result .= $interval->format("%d days "); }
if ($interval->h) { $result .= $interval->format("%h hours "); }
if ($interval->i) { $result .= $interval->format("%i minutes "); }
if ($interval->s) { $result .= $interval->format("%s seconds "); }

return $result;
}

$exp_date = new DateTime($expdate);
$today_date = new DateTime($todaydate);

$difference = $exp_date->diff($today_date);

echo "Days left to expiry:".format_interval($difference)."</br>";

Это дает (примерный результат)

Осталось дней до истечения: 4 года 10 месяцев 18 дней 8 часов 0 минут 40 секунд

Теперь я хочу показать это только тогда, когда он истекает через 2 месяца, значит, 1 месяц 30 дней или меньше ……

Я старался

  if ("%m"<=1){
echo "Days left to expiry:".format_interval($difference)."</br>";
}

но это не сработало?

Любая помощь будет высоко оценена.

Благодарю.

1

Решение

Месяцы немного сложнее и требуют дополнительной логики, но вы можете основывать это на днях, которые предоставляются DateInterval учебный класс.

Вы можете изменить логику следующим образом:

// Average 60 days over 2 months
if($difference->days <= 60) {
echo "Days left to expiry:".format_interval($difference)."</br>";
}
2

Другие решения

@steadweb

<?php
$expdate="2020-09-13 21:00:00";
$exp_date = new DateTime($expdate);
print $exp_date->format('d M. Y H:i:s');
?>

да, это сработало 🙂

1

По вопросам рекламы [email protected]