0

我想要从指定日期开始的所有下一个日期,以便在cron工作文件中发送邮件。现在我正在通过这样的计算来检查它的周数

$event_from_date    =   strtotime(date('Y-m-d',strtotime($rs->from_date)));
    $today_date     =   strtotime(date('Y-m-d'));

    $event_expire_on    =   strtotime($rs->to_date);
    if($rs->time_zone   ==  "CST")
        $current_date=strtotime($cst_date);
    elseif($rs->time_zone   ==  "PST")
        $current_date=strtotime($pst_date);
    elseif($rs->time_zone   ==  "MST")
        $current_date=strtotime($est_date);
    elseif($rs->time_zone   ==  "EST")
        $current_date=strtotime($mst_date);

if($current_date <= $event_expire_on && $current_date >= $event_from_date)
{
    $diff=$today_date-$event_from_date;
    if($diff%604800 ==  0 && $rs->report_cycle=="Weekly")  
        $flag   =   1;
    else
        $flag   =   0;
} 

任何人都可以告诉我。我怎样才能得到所有接下来的 7 天每周,每两周 15 天,每月 30 天,如星期一,星期二..

4

1 回答 1

0

我不是 100% 确定我已经理解了你的问题。DateTime 类提供了以各种方式操作日期和时间的简单方法。

我认为,在您的位置上,我会寻找DatePeriods来代表我需要的各种 erm 时期。像这样的功能可能适合:-

/**
 * @param Int $days
 * @return DatePeriod
 */
function getNumDays($days)
{
    $today = new \DateTime('UTC');
    $oneDay = new \DateInterval('P1D');

    return new \DatePeriod($today, $oneDay, $days);
}

foreach(getNumDays(7) as $day){
    //Do what ever you want with the DateTime instance
    //We'll just var_dump() it for now.
    var_dump($day);
}

看到它工作

于 2013-10-03T08:44:39.690 回答