Имя: Пароль:
IT
Веб-мастеринг
Подскажите, как боротся с кривостью функции PHP addPeriod?
0 megabax
 
03.01.13
22:26
Добавляю к дате '2010-01-30 00:00:00' 13 месяцев и addPeriod выдает 2011-03-02 00:00:00, хотя доложна выдавать 2011-02-28 00:00:00
Подскжите плз, как лечить? Может, есть какие то нормальные библиотеки для работы с датой и временем на PHP?
1 zak555
 
03.01.13
22:28
ДобавитьМесяц()
2 megabax
 
03.01.13
22:28
1, дык это 1С осовская функция, а не PHP шная
3 Wobland
 
03.01.13
22:29
(2) мы в курсе. имхо зак хорошо пошутил
4 zak555
 
03.01.13
22:31
function add_month_to_date($date, $m){    
   if (is_numeric($m)){
       while ($m>0){
           $date += cal_days_in_month(CAL_GREGORIAN, strftime("%m",$date), strftime("%G",$date))*24*60*60;        
           $m--;
       }        
   }
   return $date;
}
5 zak555
 
03.01.13
22:32
echo date("M-d-Y", mktime(date("H"), date("i"), date("s"), date("m")+1, date("d"), date("Y")));
6 Torquader
 
04.01.13
00:20
Нет, а что вы хотите получить ? В феврале нет 30 дней. Поэтому, при прибавлении месяца прибавляют Int(365.25/12) получается более похоже на правду.
7 megabax
 
04.01.13
00:23
6, тогда если прибавить месяц к 15 февраля, что доложно получиться, 17 марта что ли?
8 megabax
 
04.01.13
00:27
4, поlскжите еще плз, почему не работает strftime('%G',$date)?
Вот такая строка
echo "date: ".$date." strftime('%m',$date)=".strftime("%m",$date)." strftime('%G',$date)=".strftime("%G",$date)."<br>";
выдает результат
date: 2010-01-30 00:00:00 strftime('%m',2010-01-30 00:00:00)=01 strftime('%G',2010-01-30 00:00:00)=
Есть два вида языков, одни постоянно ругают, а вторыми никто не пользуется.