название предыдущего месяца - PullRequest
1 голос
/ 07 июля 2011

Как бы вы напечатали название предыдущего месяца, пожалуйста?

Я пишу Drupal 7 блоков, представляющих "мисс / мистер прошлого месяца" на моем сайте, и задаюсь вопросом, как это сделать лучше всего:

enter image description here

Дополнительная сложность заключается в том, что мой веб-сайт на русском языке, а имена отклонены.

В настоящее время я жестко закодировал названия месяцев в массиве.И я не знаю, как найти индекс corrent в этом массиве:

function pref_block_view($block_name = '') {
  $MONTHS = array(
    'января',
    'февраля',
    'марта',
    'апреля',
    'мая',
    'июня',
    'июля',
    'августа',
    'сентября',
    'октября',
    'ноября',
    'декабря',
  );
  ...
if ($block_name == 'pref_mister') {
    $result = db_query("
select r.id,
        count(r.id),
        u.first_name,
        u.avatar,
        u.city
from pref_rep r, pref_users u where
        r.nice=true and
        to_char(current_timestamp - interval '1 month', 'IYYY-MM') =
        to_char(r.last_rated, 'IYYY-MM') and
        u.female=false and
        r.id=u.id
group by r.id , u.first_name, u.avatar, u.city
order by count(r.id) desc
limit 1
");
    $record = $result->fetchObject();

    return array(
      'subject' => sprintf('Фаворит %s', $MONTHS[2]),
      'content' => sprintf('
<p align="center">%s</p>
<p align="center">%s</p>
<p align="center">%u оценок</p>',
                     user_link($record),
                     user_avatar($record),
                     $record->count),
    );
  }

Я пытался

setlocale(LC_TIME, "ru_RU");
print strftime("%B", strtotime("1/3/2003"));
# don't know how to get the prev. month date above...

, но он дал мне забавные символы (вероятно, не русский в UTF8 -что мне и нужно).

Ответы [ 2 ]

1 голос
/ 07 июля 2011
date("n");

даст вам месяц без начальных нулей, вычтите один для индекса массива.

Редактировать: я имею в виду вычесть 2, так как вы захотите в предыдущем месяце. Затем убедитесь, что это не входит в негативы.

0 голосов
/ 07 июля 2011

Создайте строковый массив месяцев, (0 будет январь, декабрь будет 11), получите текущий месяц, используя функцию даты - если в PHP она есть.

Затем найдите в вашем строковом массиве индекс текущего месяца - 1 и верните

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...