Как сравнить даты, когда месяц установлен на голландский - PullRequest
0 голосов
/ 05 февраля 2020

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

$today = date('Ymd');
$timeToday = strtotime($today);

$setlocale = setlocale(LC_ALL,'nl_NL', 'dutch');
$timeStartDate = strtotime($date['startDate']); // This date is formated dd-mm-yyyy where the month is written in dutch so 11 Mei 2020 as an example 

if($timeStartDate > $timeToday){
 //do something
}

Я пытался установить локаль, но когда я отображаю $ timeStartDate, это просто пустая строка. Как я мог решить это? Я не могу изменить дату в базе данных, так как это не мой проект, и многое уже зависит от него.

1 Ответ

0 голосов
/ 05 февраля 2020

К сожалению, strtotime() - это , а не , на которые влияют настройки locale . Тем не менее, расширения intl, которые обычно являются лучшим ресурсом для решения проблем i18n, имеют класс IntlDateFormatter, который может помочь вам в этом. IntlDateFormatter::parse() может анализировать отформатированную строку в данной локали в Unix отметку времени, а IntlDateFormatter::format() может делать обратное ( превращать Unix отметку времени в дату, отформатированную в локали ).

$formatter = IntlDateFormatter::create(
    "nl_NL",
    IntlDateFormatter::MEDIUM,
    IntlDateFormatter::MEDIUM
);

$timeStartDate = $formatter->parse('11 Mei 2020 00:00:00');
var_dump($timeStartDate); // gives you int(1589148000)

var_dump($timeStartDate > time()); // bool(true)
...