Задать вопрос
Sc0undRel
@Sc0undRel

Почему функция возвращает 2020 год?

почему эта функция возвращает 2020 год? вроде 2021 должно показывать уже..

function curr_month_year() {
    setlocale(LC_TIME, 'et_EE.UTF-8');
    $month_year = strftime('%B %G', mktime(0, 0, 0, date('m'), 1, date('Y')));

    return $month_year;
}
  • Вопрос задан
  • 130 просмотров
Подписаться 1 Простой 4 комментария
Решения вопроса 1
rozhnev
@rozhnev Куратор тега PHP
Fullstack programmer, DBA, медленно, дорого
Согласно документации PHP '%G' - номер года в соответствии со стандартом ISO-8601:1988

Поэтому првильно будет:
<?php
function curr_month_year() {
    setlocale(LC_TIME, 'et_EE.UTF-8');
    $month_year = strftime('%B %Y', time());

    return $month_year;
}


echo curr_month_year();


Проверить PHP код можно здесь

Либо ещё проще:
<?php
function curr_month_year() {
    setlocale(LC_TIME, 'et_EE.UTF-8');
    return date('F Y');
}

echo curr_month_year();


Тест здесь
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Самый прикол в том, что у меня в старом проекте был встроен datepicker - еще древний jquery. И мне друг показал этот прикол... он вбивает 3 января прием врача - а ему на 2020 выкидывает. Я не поверил... все прощелкал, но правда. и сейчас на Вашем примере - вручную... 2021 появляется только 4 января.

Если мне память не изменяет, то в 2022 такая ерунда касается только 1 и 2 января а 3го уже будет все ровно.
return strftime('%A %d %T %B %G', mktime(22, 22, 0, 1, 4, 2021));
Monday 04 22:22:00 January 2021

а вот 3 января 2021 года
return strftime('%A %d %T %B %G', mktime(22, 22, 0, 1, 3, <b>2021</b>));
Sunday 03 22:22:00 January <b>2020</b>


2 января 2022 года
return strftime('%A %d %T %B %G', mktime(22, 22, 0, 1, 2,<b> 2022</b>));
Sunday 02 22:22:00 January <b>2021</b>

3 января 2022 года
return strftime('%A %d %T %B %G', mktime(22, 22, 0, 1, 3, <b>2022</b>));
Monday 03 22:22:00 January <b>2022</b>


теперь я хоть понимаю откуда ноги растут у проблемы... было бы действительно интересно узнать. Потому что у многих это выстрелило и выстрелит в следующем году 1-2 января...
Было бы очень интересно узнать почему такое
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы