[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Месяцы и как их считать
Страницы: 1, 2
I++
Столкнулся с буржуями и мой моск порвало.

Есть допустим:
31-01-2014
нужно прибавить 1 месяц, по классическому матану это будет 03.03.2014
Но у буржуев другая математика у них 1 месяц в данном случае будет 28-02-2014
как на пыхе учесть такую крутую математику? biggrin.gif

Еще пример 28-01-2014 + 1 месяц = 28-02-2014 laugh.gif

Интересны ваши предложения.
Valick
Цитата
31-01-2014
нужно прибавить 1 месяц, по классическому матану это будет 03.03.2014

это как так?
а вот что по этому поводу думает MySQL точнее её разработчики
Цитата
При использовании некорректных значений дат результат будет равен NULL. Если при суммировании MONTH, YEAR_MONTH или YEAR номер дня в результирующей дате превышает максимальное количество дней в новом месяце, то номер дня результирующей даты принимается равным последнему дню нового месяца:

mysql> SELECT DATE_ADD('1998-01-30', INTERVAL 1 MONTH);
        -> 1998-02-28
TMake
I++ месяц величина не постоянная, следовательно нужно выделить что для твоей задачи будет приоритет, т.е. ты можешь делать так: 31-01-2014 + (кол. дней в следующем месяце), а может тебе нужно переводить месяц в процент и вычислять примерную дату текущей даты и находить приблизительную дату полученного месяца, или просто смотреть существование числа в другом месяце и если такого числа нет, приводить его к последней дате полученного месяца.
Invis1ble
Цитата
как на пыхе учесть такую крутую математику?

какую "такую"? ты определись, как ты хочешь считать - прибавлять месяц или прибавлять определенное кол-во дней

_____________

Профессиональная разработка на заказ

Я на GitHub | второй профиль

Invis1ble
$interval = new DateInterval('P1M');
$date = new DateTime('31-01-2014');
var_dump($date->add($interval)); // public 'date' => string '2014-03-03 00:00:00'
$date = new DateTime('28-01-2014');
var_dump($date->add($interval)); // public 'date' => string '2014-02-28 00:00:00'


_____________

Профессиональная разработка на заказ

Я на GitHub | второй профиль

I++
Хочу так:

01-01-2014 + 1 месяц = 28-02-2014
28-01-2014 + 1 месяц = 28-02-2014
31-01-2014 + 3 месяца = 30-04-2014
01-01-2014 + 3 месяца = 01-04-2014
laugh.gif
S.Chushkin
Цитата (I++ @ 9.12.2014 - 19:14)
Интересны ваши предложения.

Делайте как в mySQL - не ошибётесь.
select '2014-01-31' + interval 1 month


_____________
Рекламка / ad.pesow.com Хрень / mr-1.ru
Invis1ble
недавно писал код для построения финансовых отчетов с различными группировками и фильтрами, тоже знатно мозг вынес себе

_____________

Профессиональная разработка на заказ

Я на GitHub | второй профиль

I++
Invis1ble, дак вот я тоже сижу думаю, как вот это победить:

01-01-2014 + 1 месяц = 28-02-2014
28-01-2014 + 1 месяц = 28-02-2014
31-01-2014 + 3 месяца = 30-04-2014
01-01-2014 + 3 месяца = 01-04-2014

S.Chushkin
это кажется, то что нужно, но мускуль мне не нужен.
Invis1ble
Цитата
01-01-2014 + 1 месяц = 28-02-2014
28-01-2014 + 1 месяц = 28-02-2014
Invis1ble
мускул вот что выдает:

'2014-01-01' + interval 1 month | '2014-01-28' + interval 1 month | '2014-01-31' + interval 3 month | '2014-01-01' + interval 3 month
2014-02-01 | 2014-02-28 | 2014-04-30 | 2014-04-01




_____________

Профессиональная разработка на заказ

Я на GitHub | второй профиль

I++
Цитата
да ты же упоротый laugh.gif


Не не, просто буржуи именно так считают:
01-01-2014 + 1 месяц = 28-02-2014
28-01-2014 + 1 месяц = 28-02-2014

Точнее в одной негерийской стране laugh.gif
chee
I++, обычно в ситуациях когда нет четкого алгоритма я прошу привести требования заказчика. Перечислите требования заказчика, что он хочет, не надо углубляться в детали, просто что хочет заказчик. Если это для себя, то тоже сформируйте требования. На данный момент я не вижу каких-то внятных требований.


_____________
Люди, имеющие низкий уровень квалификации, делают ошибочные выводы, принимают неудачные решения и при этом неспособны осознавать свои ошибки в силу низкого уровня своей квалификации
I++
Да да, я понял, что тут упоротость полная. Кароч если решу проблему, то выложу сюда решение.
Valick
Цитата
Кароч если решу проблему, то выложу сюда решение.

Цитата (Invis1ble @ 9.12.2014 - 18:58)

да ты же упоротый  laugh.gif
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.