【问题标题】:How to find specific day from years given PHP?如何从给定 PHP 的年份中查找特定日期?
【发布时间】:2016-02-03 05:33:38
【问题描述】:

我正在研究如何从给定时间获取特定日期:

假设我有 2 个日期:2016 年 1 月 1 日至 2017 年 1 月 1 日,我需要知道有多少个星期一、星期二或我在输入中选择的任何日子。

有没有最好的方法来实现这一点?

【问题讨论】:

标签: php date days


【解决方案1】:

更新答案

<?php
$count = 0;
$days = array("Monday", "Friday");
foreach ($days as $day) {

    $startDate = '1 Jan 2016';
    $endDate = '1 Jan 2017';

    $endDate = strtotime($endDate);
    $i = '';
    for ($i = strtotime($day, strtotime($startDate)); $i <= $endDate; $i = strtotime('+1 week', $i)) {
        echo date('l Y-m-d', $i) . '<br>';
        $count++;
    }
}
echo $count;

【讨论】:

  • 您的代码运行良好,但我希望能够在当前时间范围内不仅找到星期一,还可以找到星期一和星期五
  • @Boby,这完全符合您的需要?
【解决方案2】:

尝试修改这个例子:

<?php
//http://php.net/manual/en/class.dateperiod.php#109846
$begin = new DateTime( '2012-08-01' );
$end = new DateTime( '2012-08-31' );
$end = $end->modify( '+1 day' );

$interval = new DateInterval('P1D');
$daterange = new DatePeriod($begin, $interval ,$end);

foreach($daterange as $date){
    //HERE ADD YOUR CONDITIONS...
    echo $date->format("Ymd") . "<br>";
}
?>

您可以查看此解决方案PHP create range of dates

【讨论】:

    【解决方案3】:

    获取所有日期并循环遍历它们,获取开始日期之后的第一个星期一,然后一次迭代 7 天:

        $endDate = strtotime($endDate);
        for($i = strtotime('Monday', strtotime($startDate)); $i <= $endDate; $i =strtotime('+1 week', $i))
        echo date('l Y-m-d', $i);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-12-07
      • 2023-03-05
      • 2023-03-23
      • 2017-01-19
      • 1970-01-01
      相关资源
      最近更新 更多