imho.ws
IMHO.WS  

Вернуться   IMHO.WS > Веб-мастеру > Веб-программирование
Опции темы
Старый 28.06.2007, 18:31     # 1
John_Cherep
Guest
 
Сообщения: n/a

php - date() - скрипт

Вообщем, такая трабла.

у меня есть дата date("d.m.Y",strtotime($odate2))
например, 27.06.07

к этой дате надо прибавить количество дней для выполенения заказа $sdacha
например, 23 дня

во-первых тупым сложением, получается 50.06.07
проблему можно избежать, переведя дату в сукунду от 1970 года.
Это первое, что я не знаю как сделать, чтобы получить нормальную дату.

вторая - просто мега проблема как мне кажется, это то что $sdacha==23 дня - не просто дня, а рабочих дня. т.е. мне надо получить готовую дату, потом определить все дни между $odate2 и готовой датой, и если там есть суббота, воскресение, то прибавить эти дни как рабочие, и снова проверить, если снова попадают выходные, то снова приплюсовывать к дате.
я, вообще, в ступоре. Помогите, плз, кто-нить решить задачу.

добавлено через 21 минуту
и ещё.
желательно предусмотреть такую штуку.
допустим я в ручную вобью все праздники, например , если в промежуток попадает дата 8.03.07, то +1 рабочий день.
как енто сделать? ((
 
Старый 28.06.2007, 18:58     # 2
RaZEr
МОД-Оператор ЭВМ
 
Аватар для RaZEr
 
Регистрация: 18.04.2002
Адрес: Питер
Сообщения: 4 343

RaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех Гуру
Праздники можно заколотить в массив, и потом просто проверить дату на наличие таковой в этом массиве. С выходными, особой проблемы нет, т.к. та же date() умеет возвращать день недели. А вот что ты хочешь сделать я не очень понял. Если просто накинуть 23 дня, но так чтобы дата не попала на выходные, то накинь а потом прибавляй по дню пока не попадёшь на будний день.
RaZEr вне форума  
Старый 28.06.2007, 19:12     # 3
John_Cherep
Guest
 
Сообщения: n/a

да нет же. не так.
к $odate2=27.06.07
надо прибавить $sdacha=23 рабочих дня

и получить дату. с вычетом выходных и праздников. я не знаю как енто забабахать.
 
Старый 29.06.2007, 13:23     # 4
John_Cherep
Guest
 
Сообщения: n/a

на первом своём вопросе опять натолкнулся на косяк.
пишу:

$plansdacha=$sdacha*24*3600;
$plan=strtotime($odate2);
$plannew=date("d.m.Y",strtotime(($plan-$plansdacha)));

мне выводит при условии, что $sdacha=1 рабочий день, $odate2=26.06.2007:

86400
1182801600
31.03.118275


подскажите, где я накосячил, плз

Последний раз редактировалось John_Cherep; 29.06.2007 в 13:32.
 
Старый 29.06.2007, 20:09     # 5
Saruman
::VIP::
 
Аватар для Saruman
 
Регистрация: 12.11.2002
Адрес: Nicosia, Cyprus
Сообщения: 1 285

Saruman ГуруSaruman ГуруSaruman ГуруSaruman ГуруSaruman ГуруSaruman ГуруSaruman ГуруSaruman ГуруSaruman ГуруSaruman ГуруSaruman ГуруSaruman ГуруSaruman ГуруSaruman Гуру
Код:
$plannew=date("d.m.Y",strtotime(($plan-$plansdacha)));
plan - timestamp, plansdacha - integer, зачем результат (который есть снова integer да ещё и timestamp) через strtotime прогонять?

вот так правильно
Код:
$plansdacha=$sdacha*24*3600;
 $plan=strtotime($odate2);
 $plannew=date("d.m.Y",$plan-$plansdacha);
__________________
"If people only knew how hard I work to gain my mastery, it wouldn't seem so wonderful at all." Michelangelo Buonarroti
Saruman вне форума  
Старый 30.06.2007, 06:02     # 6
RaZEr
МОД-Оператор ЭВМ
 
Аватар для RaZEr
 
Регистрация: 18.04.2002
Адрес: Питер
Сообщения: 4 343

RaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех Гуру
Цитата:
надо прибавить $sdacha=23 рабочих дня
Проверяй день на предмет входжения в выходные дни и праздники. Если не входит, то увеличивай счётчик дней.
RaZEr вне форума  
Старый 02.07.2007, 07:56     # 7
Face
Junior Member
 
Аватар для Face
 
Регистрация: 09.08.2005
Адрес: Свердловская область
Сообщения: 112

Face Известность не заставит себя ждать
PHP код:
<?
function redate($date) {
    $date1=date('d.m.y',mktime(0,0,0,$date[1],$date[0],$date[2]));
    return explode(".",$date1);
}
function den($date) {
    return date('w',mktime(0,0,0,$date[1],$date[0],$date[2]));
}
function hol($date) {
    $date[1]=intval($date[1]);$date[0]=intval($date[0]);
    $holiday=Array(
    1=>Array(1=>1,2=>1,7=>1),
    2=>Array(23=>1),
    3=>Array(8=>1),
    5=>Array(1=>1,2=>1,9=>1),
    6=>Array(12=>1),
    11=>Array(7=>1),
    12=>Array(12=>1)        
    );
    if(isset($holiday[$date[1]][$date[0]])) return 1;
    else return 0;
}
function plusdate($date,$plus) {
    $date=explode(".",$date);
    for($i=-1;$i<$plus;$i++) {
        if(den($date)==0 or den($date)==6) $plus++;
        if(hol($date)==1) $plus++;
        $date[0]=$date[0]+1;
        $date=redate($date);
    }
    $date[0]=$date[0]-1;
    $date=redate($date);
    echo $date[0].".".$date[1].".".$date[2];
}
echo plusdate("30.12.07",1);
?>
Face вне форума  
Старый 04.07.2007, 15:53     # 8
Hubbitus
мод
IMHO Кодер-200(6,7,8)
 
Регистрация: 29.03.2003
Адрес: Saint-Petersburg, Russia
Пол: Male
Сообщения: 2 734

Hubbitus Бог с наворотамиHubbitus Бог с наворотами
Hubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотами
Используй http://pear.php.net/Date и не парься.
__________________
Я делаю Линукс! Присоединяйтесь к свободным людям!

Связаться со мной всегда можно по джабберу: Hubbitus@jabber.ru
Pahan-Hubbitus.
Hubbitus вне форума  
Старый 13.07.2007, 15:07     # 9
Jonson
Newbie
 
Регистрация: 19.08.2003
Адрес: МО
Сообщения: 10

Jonson Путь к славе только начался
есть фишка, непомню эту функцию, которая определяет день недели, наверное надо в этом направлении искать
Jonson вне форума  
Старый 13.07.2007, 16:05     # 10
Hubbitus
мод
IMHO Кодер-200(6,7,8)
 
Регистрация: 29.03.2003
Адрес: Saint-Petersburg, Russia
Пол: Male
Сообщения: 2 734

Hubbitus Бог с наворотамиHubbitus Бог с наворотами
Hubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотами
Цитата:
Сообщение от Jonson Посмотреть сообщение
есть фишка, непомню эту функцию,
Эта функция date ()
__________________
Я делаю Линукс! Присоединяйтесь к свободным людям!

Связаться со мной всегда можно по джабберу: Hubbitus@jabber.ru
Pahan-Hubbitus.
Hubbitus вне форума  

Опции темы

Ваши права в разделе
Вы НЕ можете создавать новые темы
Вы не можете отвечать в темах.
Вы НЕ можете прикреплять вложения
Вы НЕ можете редактировать свои сообщения

BB код Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.

Быстрый переход


Часовой пояс GMT +4, время: 20:22.




Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.