Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Интервал времени
 
 автор: sl1p   (29.08.2008 в 23:04)   письмо автору
 
 

эмм такое:
есть дата1: 2008-08-29;
и дни1: 4;

и есть дата2: 2008-08-28;
и дни2: 2;

получается интервал времени1 2008-08-29 - 2008-09-02
и нужно проверить не попадает ли интервал выше в интервал времени2?

применение:
есть куча заказов с датами и днями.. тоесть заказ от даты до даты+дни.
и когда поступает заказ нужно проверить, возможно ли его подтвердить, для этого нужно проверить не будет ли он состыковаться с уже существующими.

как бы это компактней сделать?)

  Ответить  
 
 автор: DDK   (30.08.2008 в 00:00)   письмо автору
 
   для: sl1p   (29.08.2008 в 23:04)
 

А дата хранится в таком вырмате или всё-таки в Unix-time?

  Ответить  
 
 автор: sl1p   (30.08.2008 в 00:16)   письмо автору
 
   для: DDK   (30.08.2008 в 00:00)
 

в таком.. так сравнивать то можно я просто немогу нормально написать)..
или меня глючит или х3.. что тут не правильно?)
#########
$date = Суём дату заказа который нужно подтвердить
$days = Суём количество дней заказа который нужно подтвердить
$date2 = Суём дату заказа с которым сверяем
$dateout2 = Суём дату прекращения заказа с которым сравниваем..
#########

 function check_free($date,$days,$date2,$dateout2){
 for($i=0;$i<$days;$i++){
  $cd=date("Y-m-d",strtotime($date)+($i*86400));
  if($cd>=$date2 && $cd<$dateout2){
  return false;
  }
 }
 return true;           
 }

Поступивший заказ:
$date=31 Авг 2008
$days=2

###date2####$dateout2###
29 Авг 2008 # 31 Авг 2008# - false
30 Окт 2008# 01 Ноя 2008#- true
31 Авг 2008 # 02 Сен 2008#- false

  Ответить  
 
 автор: sl1p   (30.08.2008 в 00:27)   письмо автору
 
   для: sl1p   (30.08.2008 в 00:16)
 

а всё поправил, считает вроде норм.. х3 нужно ещё потестить)

  Ответить  
 
 автор: Trianon   (30.08.2008 в 12:33)   письмо автору
 
   для: DDK   (30.08.2008 в 00:00)
 

>А дата хранится в таком вырмате или всё-таки в Unix-time?
В данном случае это несущественно.

Если есть интервалы [A, B) и [C, D) , то их пересечение [E, F) можно вычислить так:
<?
function intersect($ab$cd

  list(
$a,$b) = $ab;
  list(
$c,$d) = $cd;
  if(
$b <= $c && $d <= $b
    return 
false;
  
$e $a $c $a $c;
  
$f $b $d $b $d;
  return  array(
$e$f);
}

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования