Php проверить, если строка времени целый час, как «8:00 утра»

1

У меня есть серия временных строк, таких как "8:00 am", "8:15 am", "8:30 am". У меня также есть метки времени для этих времен как ключи массивов, где, когда времена являются значениями, массив будет таким:

Примечание. Временные метки в этом примере являются фиктивными

array(
144441415=>"8:00am", 
1444784744=>8:30am
...
.....
);

Я хотел бы узнать, час ли целый час, например, "8:00 утра", "9:00 утра" - это целые часы, но "8:45 утра" или "9:30 утра" не целые часы. Я хотел бы отфильтровать целые часы из массива, как указано выше. Благодарю.

  • 1
    php.net/date . Удачи.
  • 2
    Можно ли использовать только строковое значение времени или метку времени? Если вы можете использовать метку времени, вы можете проверить минуты.
Показать ещё 2 комментария
Теги:
timestamp
time-series

3 ответа

0
Лучший ответ

Спасибо, Руди, я смог получить целый час с нескольких секунд, спасибо за подсказку, поэтому я сделал что-то вроде этого:

//Loop through each hour of the day by getting both key and value
foreach( $hours_of_day $timestamp=>$time_string )
{
    //If timestamp mod by number of seconds in hours is zero this means whole hour
    if( ($timestamp%3600) == 0 )
    {
        echo "Whole hour = $timestring<br />";
    }
}
0

Для тех, кто может столкнуться с этим вопросом, лучший способ добиться этого - это следующее:

define("BR", "<br />");
$data = array(
    144441415=>"8:00am", 
    1444784744=>"8:30am"
);

$tmp_dto; 
$tmp_mins;

foreach($data as $hour){
    $tmp_dto = DateTime::createFromFormat("H:iA", $hour);
    $tmp_mins = $tmp_dto->format("i");
    if($tmp_mins == "00"){
        echo "ROUND".BR;
    } 
    else{
        echo "NOT ROUND".BR;
    }
}

Выходы

ROUND
NOT ROUND
0

Вы могли бы сделать что-то вроде этого:

$times = array(
    144441415=>"8:00am", 
    1444784744=>"8:30am",
    1444784745=>"8:45am",
    1444784746=>"9:00am",
    1444784747=>"10:00am",

);

foreach ($times as $time) {
    if (date("H:00:00", strtotime($time)) == date("H:i:00", strtotime($time))) {
        echo '<br>Whole Hour: '.$time;
    }
    else {
        echo '<br>Not Whole Hour: '. $time;
    }
}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню