PHP: временные метки между датами - PullRequest
1 голос
/ 18 апреля 2011

У меня есть массив с отметками времени.Если эти временные метки находятся между двумя указанными датами, мне нужно собрать их в другой массив.Позвольте мне использовать пример:

Допустим, $ array1 [] имеет:

Array ( [0] => 1299147500 [1] => 1299147453 [2] => 1299146476 [3] => 1299143220 [4] => 1297934349 [5] => 1297845742 [6] => 1297695551 [7] => 1296134251 [8] => 1295948452 [9] => 1295554308 [10] => 1295369389 [11] => 1295345559 [12] => 1295261432 [13] => 1295014784 [14] => 1294929846 [15] => 1294832875 )

Мне нужно создать $ array2 [] с теми значениями из $ array1 [], которые находятся между четвергом февраля17, 2011 и четверг, 3 марта 2011 г. Как я могу это сделать?

Спасибо за тонну

Ответы [ 4 ]

2 голосов
/ 18 апреля 2011
$low = strtotime('Thursday February 17, 2011');
$high = strtotime('Thursday March 3, 2011');

$array2 = array();
foreach($array1 as $timestamp) {
    if ($low <= $timestamp && $timestamp <= $high) {
        $array2[] = $timestamp;
    }
}

альтернатива с использованием array_filter, которая будет поддерживать ключи.

$low = strtotime('Thursday February 17, 2011');
$high = strtotime('Thursday March 3, 2011');

$array2 = array_filter($array1, function($timestamp) use ($low, $high) {
    return $low <= $timestamp && $timestamp <= $high;
});
2 голосов
/ 18 апреля 2011
  1. Преобразование первой и последней даты в метки времени с использованием strtotime ()
  2. Для каждого элемента в массиве, если он находится между min и max, скопируйте его во второй массив,Сортировать массив временных меток
1 голос
/ 18 апреля 2011

http://codepad.org/mDvRJ534

<?php
$array1 = array(1299147500,1299147453,1299146476,1299143220,1297934349,1297845742,1297695551,1296134251,1295948452,1295554308,1295369389,1295345559,1295261432,1295014784,1294929846,1294832875);
$array2 = array();
$date1 = strtotime('Thursday February 17, 2011');
$date2 = strtotime('Thursday March 3, 2011');
foreach($array1 as $timestamp){
    if($timestamp <= $date2 && $timestamp >= $date1)
        $array2[] = $timestamp;
}
echo 'date1 = '.$date1."\n";
echo 'date2 = '.$date2."\n";
print_r($array2);
0 голосов
/ 18 апреля 2011

Кто-то ответил на это в другом посте здесь, приятель Как проверить, находится ли дата в заданном диапазоне?

...