Hướng dẫn get week in month php - nhận tuần trong tháng php

Tôi có một loạt các ngày ngẫu nhiên (không đến từ mysql). Tôi cần nhóm chúng vào tuần là Tuần 1, Tuần 2, v.v. đến Tuần 5.

Những gì tôi có là đây:

$dates = array('2015-09-01','2015-09-05','2015-09-06','2015-09-15','2015-09-17');

Những gì tôi cần là một chức năng để có được số tuần của tháng bằng cách cung cấp ngày.

Tôi biết rằng tôi có thể nhận được số phát trực tiếp bằng cách thực hiện

Week of the month = Week of the year - Week of the year of first day of month + 1
7 nhưng số tuần này là con số giữa năm (1-52) nhưng tôi chỉ cần số tuần của tháng, ví dụ: Vào tháng 9 năm 2015, có 5 tuần:

  • Tuần 1 = 1 đến 5
  • Tuần 2 = thứ 6 đến 12
  • Tuần3 = 13 đến 19
  • Tuần4 = 20 đến 26
  • Tuần 5 = 27 đến 30

Tôi sẽ có thể nhận được tuần 1 tuần bằng cách chỉ cung cấp ngày, ví dụ:

$weekNumber = getWeekNumber('2015-09-01') //output 1;
$weekNumber = getWeekNumber('2015-09-17') //output 3;

Hướng dẫn get week in month php - nhận tuần trong tháng php

Anders

8.0379 Huy hiệu vàng51 Huy hiệu bạc82 Huy hiệu Đồng9 gold badges51 silver badges82 bronze badges

Được hỏi ngày 16 tháng 9 năm 2015 lúc 18:18Sep 16, 2015 at 18:18

1

Tôi nghĩ rằng mối quan hệ này nên đúng và có ích:

Week of the month = Week of the year - Week of the year of first day of month + 1

Chúng ta cũng cần đảm bảo rằng các tuần "chồng chéo" từ năm trước được xử lý chính xác - nếu ngày 1 tháng 1 là vào tuần 52 hoặc 53, nó sẽ được tính là tuần 0. theo cách tương tự, nếu một ngày vào tháng 12 là Tuần đầu tiên của năm sau, nó nên được tính là 53. (Các phiên bản trước của câu trả lời này không thực hiện được điều này đúng cách.)

 51) {
        // It's the last week of the previos year.
        return 0;
    }
    else if (date('n', $date) == "12" && $weekOfYear == 1) {
        // It's the first week of the next year.
        return 53;
    }
    else {
        // It's a "normal" week.
        return $weekOfYear;
    }
}

// A few test cases.
echo weekOfMonth(strtotime("2020-04-12")) . " "; // 2
echo weekOfMonth(strtotime("2020-12-31")) . " "; // 5
echo weekOfMonth(strtotime("2020-01-02")) . " "; // 1
echo weekOfMonth(strtotime("2021-01-28")) . " "; // 5
echo weekOfMonth(strtotime("2018-12-31")) . " "; // 6

Để có được nhiều tuần bắt đầu với Chủ nhật, chỉ cần thay thế

Week of the month = Week of the year - Week of the year of first day of month + 1
8 bằng
Week of the month = Week of the year - Week of the year of first day of month + 1
9.

Đã trả lời ngày 17 tháng 9 năm 2015 lúc 7:29Sep 17, 2015 at 7:29

Hướng dẫn get week in month php - nhận tuần trong tháng php

AndersandersAnders

8.0379 Huy hiệu vàng51 Huy hiệu bạc82 Huy hiệu Đồng9 gold badges51 silver badges82 bronze badges

8

Được hỏi ngày 16 tháng 9 năm 2015 lúc 18:18

/**
 * Returns the number of week in a month for the specified date.
 *
 * @param string $date
 * @return int
 */
function weekOfMonth($date) {
    // estract date parts
    list($y, $m, $d) = explode('-', date('Y-m-d', strtotime($date)));
    
    // current week, min 1
    $w = 1;
    
    // for each day since the start of the month
    for ($i = 1; $i < $d; ++$i) {
        // if that day was a sunday and is not the first day of month
        if ($i > 1 && date('w', strtotime("$y-$m-$i")) == 0) {
            // increment current week
            ++$w;
        }
    }
    
    // now return
    return $w;
}

Tôi nghĩ rằng mối quan hệ này nên đúng và có ích:Sep 17, 2015 at 6:52

Hướng dẫn get week in month php - nhận tuần trong tháng php

Chúng ta cũng cần đảm bảo rằng các tuần "chồng chéo" từ năm trước được xử lý chính xác - nếu ngày 1 tháng 1 là vào tuần 52 hoặc 53, nó sẽ được tính là tuần 0. theo cách tương tự, nếu một ngày vào tháng 12 là Tuần đầu tiên của năm sau, nó nên được tính là 53. (Các phiên bản trước của câu trả lời này không thực hiện được điều này đúng cách.)Matteo Tassinari

Để có được nhiều tuần bắt đầu với Chủ nhật, chỉ cần thay thế

Week of the month = Week of the year - Week of the year of first day of month + 1
8 bằng
Week of the month = Week of the year - Week of the year of first day of month + 1
9.7 gold badges61 silver badges81 bronze badges

4

Đã trả lời ngày 17 tháng 9 năm 2015 lúc 7:29

function weekOfMonth($date) {
    $firstOfMonth = date("Y-m-01", strtotime($date));
    return intval(date("W", strtotime($date))) - intval(date("W", strtotime($firstOfMonth)));
}

AndersandersNov 18, 2015 at 6:38

Hướng dẫn get week in month php - nhận tuần trong tháng php

Bạn có thể sử dụng chức năng bên dưới, nhận xét đầy đủ:Goendg

Đã trả lời ngày 17 tháng 9 năm 2015 lúc 6:522 silver badges8 bronze badges

1

Matteo Tassinarimatteo Tassinari

function weekOfMonth($qDate) {
    $dt = strtotime($qDate);
    $day  = date('j',$dt);
    $month = date('m',$dt);
    $year = date('Y',$dt);
    $totalDays = date('t',$dt);
    $weekCnt = 1;
    $retWeek = 0;
    for($i=1;$i<=$totalDays;$i++) {
        $curDay = date("N", mktime(0,0,0,$month,$i,$year));
        if($curDay==7) {
            if($i==$day) {
                $retWeek = $weekCnt+1;
            }
            $weekCnt++;
        } else {
            if($i==$day) {
                $retWeek = $weekCnt;
            }
        }
    }
    return $retWeek;
}
echo weekOfMonth('2015-09-08') // gives me 2;

17.7K7 Huy hiệu vàng61 Huy hiệu bạc81 Huy hiệu đồngSep 17, 2015 at 7:22

Cách Corect làAsif Hussain

Đã trả lời ngày 18 tháng 11 năm 2015 lúc 6:381 gold badge2 silver badges11 bronze badges

2

Goendggoendg

1222 Huy hiệu bạc8 Huy hiệu Đồng

Tôi đã tự mình tạo chức năng này, dường như hoạt động chính xác. Trong trường hợp ai đó có cách làm điều này tốt hơn, xin vui lòng chia sẻ .. Đây là những gì tôi đã làm.Jun 10, 2016 at 16:48

j4r3kj4r3kj4r3k

Đã trả lời ngày 17 tháng 9 năm 2015 lúc 7:225 bronze badges

function weekOfMonth($strDate) {
  $dateArray = explode("-", $strDate);
  $date = new DateTime();
  $date->setDate($dateArray[0], $dateArray[1], $dateArray[2]);
  return floor((date_format($date, 'j') - 1) / 7) + 1;  
}

Asif Hussainasif Hussain

3411 Huy hiệu vàng2 Huy hiệu bạc11 Huy hiệu đồngJun 7, 2018 at 7:10

Hướng dẫn get week in month php - nhận tuần trong tháng php

1

________số 8

$weekNumber = getWeekNumber('2015-09-01') //output 1;
$weekNumber = getWeekNumber('2015-09-17') //output 3;
0

Giải pháp Goendg không hoạt động cho 2016-10-31.

$weekNumber = getWeekNumber('2015-09-01') //output 1;
$weekNumber = getWeekNumber('2015-09-17') //output 3;
1

Đã trả lời ngày 10 tháng 6 năm 2016 lúc 16:48Apr 26, 2016 at 2:58

1395 Huy hiệu ĐồngMark Reed

WeekOfMonth ('2015-09-17') // Trả về 315 gold badges135 silver badges167 bronze badges

Đã trả lời ngày 7 tháng 6 năm 2018 lúc 7:10

$weekNumber = getWeekNumber('2015-09-01') //output 1;
$weekNumber = getWeekNumber('2015-09-17') //output 3;
2

Với Time_t Wday (0 = Chủ nhật đến 6 = Thứ Bảy) của ngày đầu tiên của tháng trong

 51) {
        // It's the last week of the previos year.
        return 0;
    }
    else if (date('n', $date) == "12" && $weekOfYear == 1) {
        // It's the first week of the next year.
        return 53;
    }
    else {
        // It's a "normal" week.
        return $weekOfYear;
    }
}

// A few test cases.
echo weekOfMonth(strtotime("2020-04-12")) . " "; // 2
echo weekOfMonth(strtotime("2020-12-31")) . " "; // 5
echo weekOfMonth(strtotime("2020-01-02")) . " "; // 1
echo weekOfMonth(strtotime("2021-01-28")) . " "; // 5
echo weekOfMonth(strtotime("2018-12-31")) . " "; // 6
0, điều này trả lại số tuần (dựa trên Chủ nhật) trong tháng:

Được dịch thành PHP:

  1. Đã trả lời ngày 26 tháng 4 năm 2016 lúc 2:58
  2. Mark Reedmark Reed
  3. 88.6K15 Huy hiệu vàng135 Huy hiệu bạc167 Huy hiệu đồng
  4. Bạn cũng có thể sử dụng công thức đơn giản này để tìm tuần trong tháng
  5. Thuật toán:
  6. Ngày = '2018-08-08' => y-m-d

Tìm hiểu ngày của tháng, ví dụ. 08Aug 8, 2018 at 10:38

Tìm hiểu biểu diễn số của ngày trong tuần trừ 1 (số ngày trong tuần) ví dụ: (3-1)

$weekNumber = getWeekNumber('2015-09-01') //output 1;
$weekNumber = getWeekNumber('2015-09-17') //output 3;
3

Lấy sự khác biệt và lưu trữ kết quảMay 6, 2019 at 0:04

Hướng dẫn get week in month php - nhận tuần trong tháng php

$weekNumber = getWeekNumber('2015-09-01') //output 1;
$weekNumber = getWeekNumber('2015-09-17') //output 3;
4

Trừ 1 từ kết quả

Chia nó cho 7 thành kết quả và trần giá trị của kết quảJun 25, 2021 at 8:29

$weekNumber = getWeekNumber('2015-09-01') //output 1;
$weekNumber = getWeekNumber('2015-09-17') //output 3;
5

Thêm 1 vào kết quả, ví dụ. trần ((08 - 3) - 1) / 7) + 1 = 2Jul 16, 2021 at 16:21

Hướng dẫn get week in month php - nhận tuần trong tháng php

Đã trả lời ngày 8 tháng 8 năm 2018 lúc 10:38Balaji

Chức năng của tôi. Ý tưởng chính: Chúng tôi sẽ tính số lượng tuần trôi qua từ ngày đầu tiên của tháng đến hiện tại. Và số tuần hiện tại sẽ là số tiếp theo. Tác phẩm theo quy tắc: "Tuần bắt đầu từ thứ Hai" (đối với loại dựa trên Chủ nhật, chúng tôi cần chuyển đổi thuật toán ngày càng tăng)1 silver badge7 bronze badges

$weekNumber = getWeekNumber('2015-09-01') //output 1;
$weekNumber = getWeekNumber('2015-09-17') //output 3;
6

Đã trả lời ngày 6 tháng 5 năm 2019 lúc 0:04

$weekNumber = getWeekNumber('2015-09-01') //output 1;
$weekNumber = getWeekNumber('2015-09-17') //output 3;
7

làm việc tốt.Sep 26, 2018 at 14:33

Hướng dẫn get week in month php - nhận tuần trong tháng php

3

Đã trả lời ngày 25 tháng 6 năm 2021 lúc 8:29

$weekNumber = getWeekNumber('2015-09-01') //output 1;
$weekNumber = getWeekNumber('2015-09-17') //output 3;
8

Đã trả lời ngày 16 tháng 7 năm 2021 lúc 16:21

Enjoy!

BalajibalajiSep 3, 2019 at 13:45

271 Huy hiệu bạc7 Huy hiệu đồng

$weekNumber = getWeekNumber('2015-09-01') //output 1;
$weekNumber = getWeekNumber('2015-09-17') //output 3;
9

Biến thể ngắn:Dec 2, 2019 at 15:25

1

Week of the month = Week of the year - Week of the year of first day of month + 1
0

Đã trả lời ngày 26 tháng 9 năm 2018 lúc 14:33Feb 11, 2020 at 8:26

Có rất nhiều giải pháp nhưng đây là một giải pháp của tôi hoạt động tốt trong hầu hết các trường hợp.

Week of the month = Week of the year - Week of the year of first day of month + 1
1

Nó chấp nhận dấu thời gian UNIX, ngày bình thường hoặc trở lại tuần hiện tại từ

 51) {
        // It's the last week of the previos year.
        return 0;
    }
    else if (date('n', $date) == "12" && $weekOfYear == 1) {
        // It's the first week of the next year.
        return 53;
    }
    else {
        // It's a "normal" week.
        return $weekOfYear;
    }
}

// A few test cases.
echo weekOfMonth(strtotime("2020-04-12")) . " "; // 2
echo weekOfMonth(strtotime("2020-12-31")) . " "; // 5
echo weekOfMonth(strtotime("2020-01-02")) . " "; // 1
echo weekOfMonth(strtotime("2021-01-28")) . " "; // 5
echo weekOfMonth(strtotime("2018-12-31")) . " "; // 6
1 nếu bạn không vượt qua bất kỳ giá trị nào.Feb 17, 2021 at 16:27

Đã trả lời ngày 3 tháng 9 năm 2019 lúc 13:45Chin. Udara

Tôi biết đây là một bài viết cũ nhưng tôi có một ý tưởng!3 silver badges17 bronze badges

Đã trả lời ngày 2 tháng 12 năm 2019 lúc 15:25

Week of the month = Week of the year - Week of the year of first day of month + 1
2

Đã trả lời ngày 11 tháng 2 năm 2020 lúc 8:26

Week of the month = Week of the year - Week of the year of first day of month + 1
3

Làm thế nào về chức năng này sử dụng ngày tương đối của PHP? Chức năng này giả định tuần kết thúc vào thứ bảy. Nhưng điều này có thể được thay đổi dễ dàng.

Week of the month = Week of the year - Week of the year of first day of month + 1
4

Đã trả lời ngày 17 tháng 2 năm 2021 lúc 16:27

Cái cằm. Udarachin. UdaraJul 13, 2021 at 16:15

Hướng dẫn get week in month php - nhận tuần trong tháng php

6003 Huy hiệu bạc17 Huy hiệu đồngjspit

Hàm này trả về số tuần nguyên của tháng hiện tại. Tuần luôn bắt đầu vào thứ Hai và đếm luôn bắt đầu với 1.1 gold badge7 silver badges16 bronze badges

Ví dụ về việc sử dụng

Tôi hy vọng ai đó có thể kiểm tra xem nó có đứng thử nghiệm của bạn không.Hoặc giúp ai đó ra ngoài với một cách tiếp cận khác.

Week of the month = Week of the year - Week of the year of first day of month + 1
5

Đã trả lời ngày 3 tháng 8 năm 2021 lúc 16:48Aug 3, 2021 at 16:48

Hướng dẫn get week in month php - nhận tuần trong tháng php

PaolopaoloPaolo

3802 Huy hiệu vàng4 Huy hiệu bạc20 Huy hiệu đồng2 gold badges4 silver badges20 bronze badges

2

Week of the month = Week of the year - Week of the year of first day of month + 1
6

Hướng dẫn get week in month php - nhận tuần trong tháng php

Anders

8.0379 Huy hiệu vàng51 Huy hiệu bạc82 Huy hiệu Đồng9 gold badges51 silver badges82 bronze badges

Đã trả lời ngày 2 tháng 7 năm 2017 lúc 13:44Jul 2, 2017 at 13:44

1