|
|
|
|
|
для: Zilog
(09.06.2009 в 11:56)
| |
<?
function dateInDate($dateA1, $dateA2, $dateB1, $dateB2){
if($dateA1 > $dateA2) list($dateA1, $dateA2) = array($dateA2, $dateA1);
if($dateB1 > $dateB2) list($dateB1, $dateB2) = array($dateB2, $dateB1);
if($dateB1 <= $dateA1 && $dateB2 > $dateA1) $dateBetween = array($dateA1, $dateB2 < $dateA2 ? $dateB2 : $dateA2);
elseif($dateB1 > $dateA1 && $dateB2 > $dateA1) $dateBetween = array($dateB1, $dateB2 < $dateA2 ? $dateB2 : $dateA2);
else $dateBetween = FALSE;
return $dateBetween;
}
$day = 3600 * 24;
$result = dateInDate(time() - $day * 5, time() + $day * 5, time() - $day * 7, time() + $day * 3);
if(!$result) echo 'Совпадений не найдено.';
else echo 'Begin in: '.date('Y-m-d', $result[0]).' and ends in: '.date('Y-m-d', $result[1]);
|
— Вот такая функция должна, я надеюсь, работать. Возвращает FALSE, если промежутки не пересекаются, иначе возвратит массив, в котором описан пересекающийся промежуток "от" и "до"…
П.С. насколько я помню, да, unix timestamp и mysql timestamp - это абсолютно разные вещи, покрайней мере вот такой код:
mysql_query('INSERT INTO `table` (`time`) VALUES ('.time().')'); // столбец time - timestamp'овый
запишет в БД: 0000-00-00 00:00
поэтому надо так записывать:
mysql_query('INSERT INTO `table` (`time`) VALUES ('.date('YmdHis' [, $timestamp]).')');
и так доставать:
$timestamp = strtotime($row['time']); | |
|
|
|
|
автор: тест!ывфыв (09.06.2009 в 22:22) |
|
|
для: Zilog
(09.06.2009 в 11:56)
| | тест тест | |
|
|
|
|
|
|
|
для: nikita2206
(09.06.2009 в 02:54)
| | >или вам надо сделать проверку, входит ли промежуток дат в другой промежуток, и этот промежуток вывести???
Или. Только промежутков, с которыми надо делать проверку - несколько.
Формат даты выбрал Unix timespamp. Год для всех случаев устанавливаю принудительно - 1970, ибо мне важны только месяца и дни.
Само сравнение пока ещё не делал. | |
|
|
|
|
|
|
|
для: Zilog
(09.06.2009 в 02:30)
| |
<?
$date1 = time() - (3600 * 24 * 2); // позавчера
$userdate = time() - (3600 * 24 * 1); // вчера
$date2 = time(); // сегодня
if(($userdate < $date2 && $userdate > $date1) || ($userdate > $date2 && $userdate < $date1)) echo date('Y-m-d H:i:s', $userdate).' - Находится между: '.date('Y-m-d H:i:s', $date1).' и '.date('Y-m-d H:i:s', $date2);
|
— этот код подходит под проверку одной даты, если надо две, то просто надо додумать…
или вам надо сделать проверку, входит ли промежуток дат в другой промежуток, и этот промежуток вывести??? | |
|
|
|
|
|
|
| Есть несколько периодов дат (на примере их четыре: A,B,C и D).
||--------A---------||-----------B---------||-----------C-----------||------------D----------||
.............................................. {Uf------------ user select --------------Ut} ............
Каждый описывается хранится в БД двумя полями timestamp, куда планируется заносить даты в формате дд.мм.
Есть две даты заданные пользователем, в таком же формате день-месяц.
Вопрос - как бы сделать сравнение дат (какие периоды задеваем), как скажется на сравнении отсутствие данных по году в обоих случаях?
И ещё вопрос: я правильно понял, что метка времени Unix и mysql timestamp - разные вещи? | |
|
|
|
|