【问题标题】:Filter array of date strings using array_filter使用 array_filter 过滤日期字符串数组
【发布时间】:2014-07-13 17:32:21
【问题描述】:

我有一个日期字符串数组:

Array
(
    [0] => 2014-03-24
    [1] => 2014-03-18
    [2] => 2014-06-08
    [3] => 2014-08-21
    [4] => 2014-09-11
)

我想使用 array_filter 函数过滤掉所有早于特定月份和年份的条目:

array_filter($array, "newer_than");

function newer_than($var)
{
    return (strtotime($var) > CURRENT MONTH AND YEAR);
}

任何帮助将不胜感激

谢谢

【问题讨论】:

  • 您想过滤掉当前时间之前的条目吗?使用time() 代替CURRENT MONTH AND YEAR。

标签: php arrays date filter


【解决方案1】:

strtotime() 足够聪明,可以获取当月的 UNIX 时间戳:

$thisMonth = strtotime('first day of ' . date('F Y'));

$array2 = array_filter($array1, function ($val) use ($thisMonth) {
    return strtotime($val) > $thisMonth;
});

【讨论】:

    【解决方案2】:

    如果你想指定不是当前的月份和年份,你可以这样做:

        <?
        $array[] = "2014-03-24";
        $array[] = "2014-03-18";
        $array[] = "2014-06-08";
        $array[] = "2014-08-21";
        $array[] = "2014-09-11";
    
        $array = array_filter($array, "newer_than");
    
        function newer_than($var)
        {
                $specificMonth = 8;
                $specificYear = 2014;
    
                return (strtotime($var) > mktime(0,0,0,$specificMonth,1,$specificYear) );
        }
    
        ?>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-14
      • 2020-05-01
      • 2021-06-06
      • 1970-01-01
      • 2019-04-04
      相关资源
      最近更新 更多