|
Подскажите, как боротся с кривостью функции 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)=
|
|