|
|
|
| Кто-нибудь сталкивался?
Сегодня выяснилось, что вычитает не 1 месяц, а 30 дней. Т.е. сегодня (31 мая)
<?php
date_default_timezone_set('Europe/Moscow');
echo date('M'); // May
echo date('M',strtotime('-1 month')); // May
| и даже если уточнить:
<?php
echo date('M',strtotime(date('Y-m-d ').'-1 month')); // все-равно May
|
Попробовал так:
<?php
echo date('M',strtotime('-'.date('t').' day'));
| но тогда, если переставить дату на 01.05.2013, то результат - Март, что логично.
Кто-нибудь придумает удобный выход (без if, case и т.п.)? | |
|
|
|
|
|
|
|
для: Sfinks
(31.05.2013 в 15:54)
| | Вот такой вариант вроде корректно работает:
<?php
echo date('M',strtotime('-'.date('t',strtotime('-1 day')).' day'));
| но как-то он не интуитивен...
Нужно долго смотреть и соображать, чего сколько из чего вычитается.
Может кто-то что-то лучше предложит? | |
|
|
|
|
|
|
|
для: Sfinks
(31.05.2013 в 15:54)
| | Видимо такой вопрос возникает ежегодно )))
http://habrahabr.ru/post/144959/
31 апреля == 1 мая, все логично вроде. 31 мая - 1 месяц = 31 апреля, в апреле 30 дней, поэтому смещаемся на один день вперед. | |
|
|
|
|
|
|
|
для: Igorek
(31.05.2013 в 16:46)
| | Забавное решение =) Спасибо!
И я его все же продублирую тут (вдруг кому пригодится)
<?php
echo date('M',strtotime('first day of previous month'));
|
P.S.
> Видимо такой вопрос возникает ежегодно )))
По идее этот вопрос должен возникать каждые пару месяцев. А пик приходиться на март, т.к. там целых 3 дня для того чтобы с ним столкнуться. | |
|
|
|