第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

獲取指定月份的所有周,從周日到周六的周

獲取指定月份的所有周,從周日到周六的周

我直接在下面嘗試了這段代碼。它很接近,但仍然找不到從每月 1 號(hào)到第一個(gè)星期六的周,然后是從周日到周六的每周,直到最后一個(gè)周日到月底。function get_weeks($month, $year) {    $weeks = array();    $date = DateTime::createFromFormat('mY', $month.$year);    $date->modify('first day of this month');    $end = clone $date;    $end->modify('last day of this month');    $interval = DateInterval::createFromDateString('1 week');    $period = new DatePeriod($date, $interval, $end);    $counter = 1;    foreach ($period as $dt) {        $end_of_week = clone $dt;        $end_of_week->modify('this Saturday');        $weeks[] = sprintf("Week %u: %s - %s",             $counter,            $dt->format('Y-m-d'),            $end_of_week->format('Y-m-d')        );              $counter++;    }    return $weeks;}$weeks = get_weeks('08', '2020');print_r($weeks); 它打?。篈rray([0] => Week 1: 2020-08-01 - 2020-08-01[1] => Week 2: 2020-08-08 - 2020-08-08[2] => Week 3: 2020-08-15 - 2020-08-15[3] => Week 4: 2020-08-22 - 2020-08-22[4] => Week 5: 2020-08-29 - 2020-08-29)但它應(yīng)該打印:Array([0] => Week 1: 2020-08-01 - 2020-08-01 //correct for this month since 1st day of month and 1st Saturday of this month just happen to be on the same day[1] => Week 2: 2020-08-02 - 2020-08-08 [2] => Week 3: 2020-08-09 - 2020-08-15 [3] => Week 4: 2020-08-16 - 2020-08-22 [4] => Week 5: 2020-08-23 - 2020-08-29 [5] => Week 6: 2020-08-30 - 2020-08-31 //last Sunday until end of month)
查看完整描述

2 回答

?
慕絲7291255

TA貢獻(xiàn)1859條經(jīng)驗(yàn) 獲得超6個(gè)贊

我決定從算術(shù)角度而不是日期時(shí)間角度來(lái)完成這項(xiàng)任務(wù)。

也許有一種我沒(méi)有考慮的優(yōu)雅的日期時(shí)間對(duì)象變異技術(shù),但我不認(rèn)為我的函數(shù)調(diào)用輕方法是可怕的。

我相信我的變量命名將通過(guò)我的腳本提供足夠的邏輯指導(dǎo),但實(shí)際上,我通過(guò)變量/計(jì)算量增加給定周的開(kāi)始和結(jié)束天數(shù),并在整個(gè)月的所有天數(shù)都達(dá)到時(shí)終止循環(huán)。代表。

代碼:(演示

function get_weeks($month, $year) {

    $weeks = [];

    $ym = $year . '-' . $month;

    $final = date('t', strtotime($ym));

    $firstSat = date('d', strtotime("first Saturday of $ym"));

    $d = 1;

    $weekNo = 0;


    do {

        $weekEnd = $d === 1 ? $firstSat : min($final, $d + 6);

        $weeks[] = sprintf(

            "Week %d: %s-%02d - %s-%02d",

            ++$weekNo,

            $ym,

            $d,

            $ym,

            $weekEnd

        );

        $d = $weekEnd + 1;

    } while ($weekEnd < $final);


    return $weeks;

}

foreach (['01','02','03','04','05','06', '07', '08', '09', '10', '11', '12'] as $month) {

    echo var_export(get_weeks($month, '2020'), true) . "\n";

}

輸出:


array (

  0 => 'Week 1: 2020-01-01 - 2020-01-04',

  1 => 'Week 2: 2020-01-05 - 2020-01-11',

  2 => 'Week 3: 2020-01-12 - 2020-01-18',

  3 => 'Week 4: 2020-01-19 - 2020-01-25',

  4 => 'Week 5: 2020-01-26 - 2020-01-31',

)

array (

  0 => 'Week 1: 2020-02-01 - 2020-02-01',

  1 => 'Week 2: 2020-02-02 - 2020-02-08',

  2 => 'Week 3: 2020-02-09 - 2020-02-15',

  3 => 'Week 4: 2020-02-16 - 2020-02-22',

  4 => 'Week 5: 2020-02-23 - 2020-02-29',

)

array (

  0 => 'Week 1: 2020-03-01 - 2020-03-07',

  1 => 'Week 2: 2020-03-08 - 2020-03-14',

  2 => 'Week 3: 2020-03-15 - 2020-03-21',

  3 => 'Week 4: 2020-03-22 - 2020-03-28',

  4 => 'Week 5: 2020-03-29 - 2020-03-31',

)

array (

  0 => 'Week 1: 2020-04-01 - 2020-04-04',

  1 => 'Week 2: 2020-04-05 - 2020-04-11',

  2 => 'Week 3: 2020-04-12 - 2020-04-18',

  3 => 'Week 4: 2020-04-19 - 2020-04-25',

  4 => 'Week 5: 2020-04-26 - 2020-04-30',

)

array (

  0 => 'Week 1: 2020-05-01 - 2020-05-02',

  1 => 'Week 2: 2020-05-03 - 2020-05-09',

  2 => 'Week 3: 2020-05-10 - 2020-05-16',

  3 => 'Week 4: 2020-05-17 - 2020-05-23',

  4 => 'Week 5: 2020-05-24 - 2020-05-30',

  5 => 'Week 6: 2020-05-31 - 2020-05-31',

)

array (

  0 => 'Week 1: 2020-06-01 - 2020-06-06',

  1 => 'Week 2: 2020-06-07 - 2020-06-13',

  2 => 'Week 3: 2020-06-14 - 2020-06-20',

  3 => 'Week 4: 2020-06-21 - 2020-06-27',

  4 => 'Week 5: 2020-06-28 - 2020-06-30',

)

array (

  0 => 'Week 1: 2020-07-01 - 2020-07-04',

  1 => 'Week 2: 2020-07-05 - 2020-07-11',

  2 => 'Week 3: 2020-07-12 - 2020-07-18',

  3 => 'Week 4: 2020-07-19 - 2020-07-25',

  4 => 'Week 5: 2020-07-26 - 2020-07-31',

)

array (

  0 => 'Week 1: 2020-08-01 - 2020-08-01',

  1 => 'Week 2: 2020-08-02 - 2020-08-08',

  2 => 'Week 3: 2020-08-09 - 2020-08-15',

  3 => 'Week 4: 2020-08-16 - 2020-08-22',

  4 => 'Week 5: 2020-08-23 - 2020-08-29',

  5 => 'Week 6: 2020-08-30 - 2020-08-31',

)

array (

  0 => 'Week 1: 2020-09-01 - 2020-09-05',

  1 => 'Week 2: 2020-09-06 - 2020-09-12',

  2 => 'Week 3: 2020-09-13 - 2020-09-19',

  3 => 'Week 4: 2020-09-20 - 2020-09-26',

  4 => 'Week 5: 2020-09-27 - 2020-09-30',

)

array (

  0 => 'Week 1: 2020-10-01 - 2020-10-03',

  1 => 'Week 2: 2020-10-04 - 2020-10-10',

  2 => 'Week 3: 2020-10-11 - 2020-10-17',

  3 => 'Week 4: 2020-10-18 - 2020-10-24',

  4 => 'Week 5: 2020-10-25 - 2020-10-31',

)

array (

  0 => 'Week 1: 2020-11-01 - 2020-11-07',

  1 => 'Week 2: 2020-11-08 - 2020-11-14',

  2 => 'Week 3: 2020-11-15 - 2020-11-21',

  3 => 'Week 4: 2020-11-22 - 2020-11-28',

  4 => 'Week 5: 2020-11-29 - 2020-11-30',

)

array (

  0 => 'Week 1: 2020-12-01 - 2020-12-05',

  1 => 'Week 2: 2020-12-06 - 2020-12-12',

  2 => 'Week 3: 2020-12-13 - 2020-12-19',

  3 => 'Week 4: 2020-12-20 - 2020-12-26',

  4 => 'Week 5: 2020-12-27 - 2020-12-31',

)



查看完整回答
反對(duì) 回復(fù) 2023-09-15
?
POPMUISE

TA貢獻(xiàn)1765條經(jīng)驗(yàn) 獲得超5個(gè)贊

我有一個(gè)函數(shù),它根據(jù)特定月份和年份中的特定周數(shù) (1-6) 以 DateTime 對(duì)象數(shù)組的形式提供周開(kāi)始日期和結(jié)束日期。如果發(fā)生錯(cuò)誤,該函數(shù)將返回 NULL。


function datesWeekInMonth(int $monthWeekNumber, int $month, int $year):?array {

  //week from Sun to Sat ! 

  $sat = date_create('first Sat of '.$year.'-'.$month);

  if($monthWeekNumber < 1 OR $sat === false) return NULL;

  if($monthWeekNumber == 1) return [date_create($year.'-'.$month.'-01'),$sat];

  $lastDayOfMonth = date_create('last Day of '.$year.'-'.$month);

  for($i=1;$i<$monthWeekNumber;$i++) {

    $sun = (clone $sat)->modify('+1 Day');

    $sat->modify('next Sat');

  }

  if($sun > $lastDayOfMonth) return NULL;

  return [$sun,min($sat,$lastDayOfMonth)];

}

使用示例:


$result = datesWeekInMonth(3,8,2020); //third week of August 2020


var_dump($result);

/*

array(2) {

  [0]=>

  object(DateTime)#4 (3) {

    ["date"]=>

    string(26) "2020-08-09 00:00:00.000000"

    ["timezone_type"]=>

    int(3)

    ["timezone"]=>

    string(13) "Europe/Berlin"

  }

  [1]=>

  object(DateTime)#1 (3) {

    ["date"]=>

    string(26) "2020-08-15 00:00:00.000000"

    ["timezone_type"]=>

    int(3)

    ["timezone"]=>

    string(13) "Europe/Berlin"

  }

}

*/


查看完整回答
反對(duì) 回復(fù) 2023-09-15
  • 2 回答
  • 0 關(guān)注
  • 139 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)