|
|
|
| В VisualFoxPro есть такая функция GoMonth
задаешь ей дату и сдвиг в месяцах и она вычисляет искомое.
Например:
newDate=GoMonth(oldDate, 6)
если oldDate=29-04-2006 то newDate будет равно 29-10-2006
Если аналогичная функция в PHP?
а то у меня получилась такая вот конструкция
function gomonth_d($tdDate, $tnMonth)
{
$laDate=explode('-',$tdDate); // YYYY-MM-DD
$laNewDate=explode('-', date('Y-m-d', mktime(0, 0, 0, $laDate[1], $laDate[2], $laDate[0]) + $tnMonth*2592000));
return date('Y-m-d', mktime(0, 0, 0, $laNewDate[1], $laDate[2], $laNewDate[0]));
}
|
А хотелось бы юзать стандартную функцию (если таковая имеется). | |
|
|
|
|
|
|
|
для: targa
(29.04.2006 в 04:12)
| | >YYYY-MM-DD
А вы не из MySQL извлекаете даты? Это можно очень просто сделать средствами MySQL, причём сдвиг можно задать любой от нескольких секунд, до лет.
SELECT tdDate + INTERVAL 6 MONTH AS tdDate FROM tlb
|
| |
|
|
|
|
|
|
|
для: cheops
(29.04.2006 в 10:23)
| | Да если бы :(
Я беру сегодняшнюю дату date('Y-m-d') и к ней должен прибаить 6/9/12/18/24 месяца. Но не просто дни умножить на секунды и через mktime посчитать, а чтоб и число осталось прежнее (а то при простом прибавлении секунд можно промахнуться).
Я думал отправить запрос к мускулу для вычисления, но не хочется грузить его еще и этим. | |
|
|
|
|
|
|
|
для: targa
(29.04.2006 в 04:12)
| | Так пойдёт?
<?php
function GoMonth($num) {
list($year, $month, $day) = sscanf(date("Y-m-d"), "%04d-%02d-%02d");
$month += $num;
while( $month > 12 ) {
$month -= 12;
$year++;
}
return sprintf("%04d-%02d-%02d", $year, $month, $day);
}
echo GoMonth(10);
?>
|
| |
|
|
|
|
|
|
|
для: Саня
(29.04.2006 в 22:15)
| | Спасибо Саня такой вариант изящнее.
Жаль конечно, что нет встроенной такой функции. | |
|
|
|
|
|
|
|
для: targa
(30.04.2006 в 00:11)
| | echo date("Y.m.d", strtotime("+10 month"));
? | |
|
|
|
|
|
|
|
для: isset
(30.04.2006 в 00:30)
| | Ну вот. Все по В.И.Ульянову "учицца, учицца, учицца".
isset - my very big thx. Всем ослаьным тоже сенкс. Тему можно закрывать. | |
|
|
|