检查日期是否落在特定日期并排序

时间:2012-11-26 17:08:29

标签: php string

我有一个PHP数组列表中的日期列表。所有日期都在星期二或星期四登陆,并采用以下格式:2012年3月8日。我正在尝试列出日期并检查下一个日期的最大值(所有这些都必须在将来,没有通过)并验证每个日期的星期几。一旦被发现,我想把它们放在两个单独的列表中,一个用于周二登陆的4个,另外四个用于星期四(后来被放入单独的DIV)。任何人都知道如何完成这项工作?

为了分离200多行代码,这是我的例子:

今天是2012年11月26日星期一。

这是我的日期数组:

2012年11月27日
2012年11月29日
2012年12月4日
2012年12月6日
2012年12月11日
2012年12月13日
2012年12月18日
2012年12月20日
2012年12月25日
2012年12月27日
2013年1月1日
2013年1月3日
2013年1月8日
2013年1月10日

我想把它变成2个列表:

星期二列表 2012年11月27日
2012年12月4日
2012年12月11日
2012年12月18日

周四列表 2012年11月29日
2012年12月6日
2012年12月13日
2012年12月20日

提前致谢!

2 个答案:

答案 0 :(得分:0)

怎么样:

date('w', strtotime($my_date));

这应该可以为您提供所需的所有信息。

答案 1 :(得分:0)

这是一个步骤过程(创建函数,获取键,循环使用键位置对日期进行排序)

数组(使用发布的样本数组) -

$date_array = array('November 27, 2012','November 29, 2012','December 4, 2012','December 6, 2012','December 11, 2012','December 13, 2012','December 18, 2012','December 20, 2012','December 25, 2012','December 27, 2012','January 1, 2013','January 3, 2013','January 8, 2013','January 10, 2013');

首先创建一个函数来查找最接近的$array

function closest($array, $number) {

  ksort($array);
  foreach ($array as $a) {
    if (strtotime($a) >= strtotime($number)) return $a;
  }
  return end($array);
  };

使用我们的新功能查找今天的日期或下一个最近的日期,然后获取value的密钥 -

$today = date("F j, Y");
$value = closest($date_array, $today);
$key = array_search($value, $date_array);

创建Tuesday&用于保存数据的Thursday数组 -

$tues_array = array();
$thurs_array = array();

循环显示每个date,从当前(或最接近)日期开始8次$key+8并将其添加到Tuesday(2)& Thursday(4)

for($i=$key;$i<($key+8);$i++){
  $dayofweek = date('w', strtotime($date_array[$i]));
    if ($dayofweek == 2){
        $tues_array[] = $date_array[$i];}
    if ($dayofweek == 4){
        $thurs_array[] = $date_array[$i];}
}