繁体   English   中英

计算月,年,星期和星期数的日期

[英]Calculate day of month with month, year, day of week and number of week

如何计算PHP中的月份,给出月,年,星期和星期数。
比如,如果我有2013年9月,星期几是星期五,星期几是2,我应该得到6.(​​2013年9月6日是第2周的星期五。)

实现此目的的一种方法是使用strtotime() 相对格式

不幸的是,它并不像以下那样简单:

strtotime('Friday of second week of September 2013');

为了让你的周数工作,你需要再次使用相对时间戳调用strtotime()

$first_of_month_timestamp = strtotime('first day of September 2013');
$second_week_friday = strtotime('+1 week, Friday', $first_of_month_timestamp);
echo date('Y-m-d', $second_week_friday); // 2013-09-13

注意 :由于每月的第一天从第一周开始,我相应地减少了一周。

我打算建议以这种方式使用strtotime()

$ts = strtotime('2nd friday of september 2013');
echo date('Y-m-d', $ts), PHP_EOL;
// outputs: 2013-09-13

看来这不是你想要日历表现的方式吗? 但它遵循(适当的)标准:)

这种方式有点长而且明显,但它的工作原理。

/* INPUT */
$month = "September";
$year = "2013";
$dayWeek= "Friday";
$week = 2;

$start = strtotime("{$year}/{$month}/1"); //get first day of that month
$result = false;
while(true) { //loop all days of month to find expected day
    if(date("w", $start) == $week && date("l", $start) == $dayWeek) {
        $result = date("d", $start);
        break;
    }
    $start += 60 * 60 * 24;
}

var_dump($result); // string(2) "06"

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM