【问题标题】:assigning week number (1 - 5) to days of the month将周数 (1 - 5) 分配给一个月中的几天
【发布时间】:2012-09-25 17:00:09
【问题描述】:

我正在尝试为一个月中的几天分配 1 到 5 周,即

  Day 1 - 7   = Week 1
  Day 8 - 14  = Week 2
  Day 15 - 21 = Week 3
  Day 22 - 28 = Week 4
  Day 23 - 31 = Week 5

平年和闰年的所有月份。

我的问题是:像 2012 年 9 月(周日至周六)这样的一个月,其中 9 月 1 日是第 35 周的最后一天,而 9 月 30 日是第 40 周的开始,因此这些周并不独特。

我的周数是否总是正确的?

我每个月都有这样的日子。此代码还用于从 1 到 53 获取周数。但我只想要每个月的第 1 周到 4/5 周。

$month array('january'.........'december');
$year = array('2011',........'2099');
for($i=0; $i<count($year); $i++){
    for($j=0; $j<count($month); $j++){
        $stamp = strtotime("last Monday of $month[$j] $year[$i]");
        $date = date("d-M-Y", $stamp); 
        $newdate = explode("-", $date); 
        echo "Day - $date[0]". "<br>";
        echo "Month - $date[1]". "<br>";
        echo "Year - $date[2]". "<br><br>";

【问题讨论】:

  • 你能显示你用来计算天数的代码吗?
  • 我会选择(int) (date('d', $date) / 7) + 1。取决于你需要什么。请说明您需要什么输出。
  • @think123 想说的是,您应该检查之前的问题并在适用的情况下接受答案,如常见问题解答中所述:stackoverflow.com/faq#howtoask
  • @Jack 请看更新。
  • @ilp 如果我理解正确的话,我想我在之前的评论中发布的解决方案可能就是您需要的,不是吗?

标签: php calendar week-number


【解决方案1】:

你可以用这个sn-p

<?php
function weekInMonth($date) {
return (int) ((date('d', $date) - 1) / 7) + 1;
}    

返回:

weekInMonth(strToTime('2012/09/01')); // 1
weekInMonth(strToTime('2012/09/14')); // 2
weekInMonth(strToTime('2012/09/15')); // 3
weekInMonth(strToTime('2012/09/21')); // 3
weekInMonth(strToTime('2012/09/22')); // 4
weekInMonth(strToTime('2012/09/28')); // 4
weekInMonth(strToTime('2012/09/29')); // 5

再一次,我不太确定它是否适用于您的用例。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-07-30
    • 1970-01-01
    • 1970-01-01
    • 2011-09-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多