За последние 24 часа нас посетили 58464 программиста и 5378 роботов. Сейчас ищут 1839 программистов ...

Сравнение дат

Тема в разделе "PHP для новичков", создана пользователем g008, 15 авг 2016.

  1. g008

    g008 Новичок

    С нами с:
    15 авг 2016
    Сообщения:
    2
    Симпатии:
    0
    Друзья!

    Перегоняю расписание авиакомпании из вида
    DEP ARR START-DATE END-DATE OPERATION-DAYS ....,
    где
    START-DATE - начало периода (напр: 02JUL16)
    END-DATE - конец периода (напр: 12SEP16)
    OPERATION-DAYS - дни недели (напр: 123 5 7)

    в вид
    DEP ARR DEP-DATETIME ARR-DATETIME.

    В расписании 3К+ строк, период может вклюать текущую дату, быть до или после неё.
    Не интересуют рейсы в прошлом.
    Timeline:

    A B C
    START------------------------>END

    A, B, C = today.

    Если A - ничего не изменяю (все рейсы в будущем),
    если В - заменяю START-DATE на TODAY, чтобы не перебирать даты в прошлом,
    если С - игнорирую этот период - он в прошлом.

    Состряпал такое условие:
    Код (Text):
    1.  
    2. // Тут цикл перебирает строки расписания
    3. foreach () {
    4.      
    5. if    (strtotime($today)>strtotime($start) AND strtotime($today)<strtotime($end))
    6.         {
    7.             $start = $today;
    8.         }
    9. else if (strtotime($today)>strtotime($end))  
    10.         {
    11.             GOTO END;      
    12.         }
    13. //  тут стряп-ляп внутри цикла с каждым периодом, кроме тех что посланы в END
    14.  
    15.  
    16.        END:
    17. } // конец цикла
    Без него получаю 50К рейсов (всех - и в прошлом и в будущем.
    С условием - остается 43К.

    Но WTF - 14 прошедших рейсов всё-равно болтается. ААААААААААААААААААААА)))

    Может пыха или апач тупят?
    Скорее всего, конечно это я туплю.

    Пж, помогите разобраться. Заранее благодарю.

    БОНУС:
    Вообще, стоит ли хранить эти 43К строк в базе?
    Мне, как ламеру, так проще ориентироваться в расписании.
    А что говорят по этому поводу британские учёные?
     
  2. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.213
    Симпатии:
    1.711
    Адрес:
    Молдова, г.Кишинёв
    Пример #2 Сравнение объектов DateTime
    https://secure.php.net/manual/ru/datetime.diff.php

    Это очень плохо. AND -> &&, GOTO -> break/continue в циклах
     
    g008 и mahmuzar нравится это.
  3. g008

    g008 Новичок

    С нами с:
    15 авг 2016
    Сообщения:
    2
    Симпатии:
    0
    denis01,
    спс за ответ и такую удивительную в своей простоте штуку continue.

    Условие переделал по мануалу newDateTime....
    Но, увы, same shit
    Должно быть косяк не в условии
     
  4. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.213
    Симпатии:
    1.711
    Адрес:
    Молдова, г.Кишинёв