Вывод 24 часа из 12 часов без AM и PM в PHP - PullRequest
1 голос
/ 10 ноября 2010

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

Во всяком случае, расписание, которое я читаю, отображает время в 12-часовом формате, но без AM / PM (например, просто 9:43).Я храню время в базе данных как приблизительную метку времени Unix, что означает, что мне нужен мой скрипт, чтобы можно было определить, является ли время AM или PM.

Данные, которые я собираю из списков, могут быть между двумя часами назад и шестью часами в будущем.Таким образом, в 9 часов утра, когда сценарий будет запущен, можно было бы увидеть предстоящий поезд в 2 часа дня, и поезд в 7 часов утра мог бы остаться на борту, если он не ушел вовремя.

Я написал функцию, которая принимает два параметра -- час, который нужно оценить, и текущий системный час, на котором будет основано «предположение» (я понимаю, что могла бы получить функцию для получения самого времени, но я пыталась написать модульный тест, который ужасно провалился, поэтому я и сделала это).Я бы опубликовал это здесь, но на самом деле это не работает, и я хотел бы начать с нескольких советов или советов от ваших замечательных людей.

Кто-нибудь может мне помочь?Какой хороший способ подойти к этому?

Ответы [ 3 ]

1 голос
/ 10 ноября 2010

Если вы знаете, в какое время вы соскребли страницу (вам следует), и вы знаете указанное время (ясно, что вы делаете), и , вы знаете, что время от -2 до +6 страницы доступ (например, время, когда вы просмотрели страницу) ... Я не вижу, в чем проблема. Кажется, у вас есть вся необходимая информация.

Я очищаю страницу в 11:30 (AM). Существует отправка в 2:15. Что ж, при выборе между 2:15 и 14:15, есть только один из двух, который менее чем через 6 часов после 11:30 (AM). Если бы я увидел запись на 10:30, я бы знал, что это должен был быть «час назад», потому что прибытия в 11 часов в будущем не будет в списке (согласно вашему объяснению).

Или я что-то упустил?

0 голосов
/ 10 ноября 2010

ОК, я забыл, что этот скрипт запускается для инициализации поездов, так как они появляются на табло за час до начала, поэтому «2 часа назад» не проблема. Вот то, что я придумал, похоже, работает:

 function convertTime($input, $currentHour) {
    if ($currentHour >= 8 && $currentHour < 12 && $input < 8) {
        $input += 12;
    }
    if ($currentHour > 12 && $currentHour < 20 && $input < 12) {
        $input += 12;
    }
    if ($currentHour > 20 && $currentHour < 24 && $input > 8) {
        $input +=12;
    }
$return $input;
}
0 голосов
/ 10 ноября 2010

Традиционно, расписание поездов различает время от полудня до полудня.Насколько я помню, вечера всегда смелые.Если это так для вашего источника, просто следите, если текст находится внутри или .

...