Hướng dẫn how to get start and end date of week in php? - làm thế nào để lấy ngày bắt đầu và ngày kết thúc trong tuần trong php?

Tôi đã thấy một số biến thể về câu hỏi này nhưng tôi tin rằng điều này chưa được trả lời.

Tôi cần có được ngày bắt đầu và ngày kết thúc của một tuần, được chọn theo số năm và tuần (không phải ngày)

example:

input:

getStartAndEndDate($week, $year);

output:

$return[0] = $firstDay;
$return[1] = $lastDay;

Giá trị trả lại sẽ giống như một mảng trong đó mục đầu tiên là ngày bắt đầu tuần và ngày thứ hai là ngày kết thúc.

Tùy chọn: Mặc dù chúng tôi đang ở đó, định dạng ngày cần phải là

$return[0] = $firstDay;
$return[1] = $lastDay;
8 (định dạng ngày bình thường, không có số không hàng đầu.

Tôi đã thử chỉnh sửa các chức năng hiện tại gần như đã làm những gì tôi muốn nhưng tôi không gặp may mắn cho đến nay.

Xin hãy giúp tôi, cảm ơn trước.

Hướng dẫn how to get start and end date of week in php? - làm thế nào để lấy ngày bắt đầu và ngày kết thúc trong tuần trong php?

Chiếu

198K40 Huy hiệu vàng385 Huy hiệu bạc400 Huy hiệu Đồng40 gold badges385 silver badges400 bronze badges

hỏi ngày 1 tháng 2 năm 2011 lúc 10:24Feb 1, 2011 at 10:24

1

Sử dụng lớp DateTime:

function getStartAndEndDate($week, $year) {
  $dto = new DateTime();
  $dto->setISODate($year, $week);
  $ret['week_start'] = $dto->format('Y-m-d');
  $dto->modify('+6 days');
  $ret['week_end'] = $dto->format('Y-m-d');
  return $ret;
}

$week_array = getStartAndEndDate(52,2013);
print_r($week_array);

Returns:

Array
(
    [week_start] => 2013-12-23
    [week_end] => 2013-12-29
)

Explained:

  • Tạo một đối tượng DateTime mới mặc định cho đến bây giờ ()
  • Gọi Setisodate để thay đổi đối tượng thành ngày đầu tiên của Tuần $ của năm $ thay vì bây giờ ()
  • Ngày định dạng là 'y-m-d' và đặt vào $ ret ['week_start']]]
  • Sửa đổi đối tượng bằng cách thêm 6 ngày, sẽ là cuối tuần của $
  • Ngày định dạng là 'y-m-d' và đặt vào $ ret ['week_end']]

Một phiên bản ngắn hơn (hoạt động trong> = PHP5.3):

function getStartAndEndDate($week, $year) {
  $dto = new DateTime();
  $ret['week_start'] = $dto->setISODate($year, $week)->format('Y-m-d');
  $ret['week_end'] = $dto->modify('+6 days')->format('Y-m-d');
  return $ret;
}

Có thể được rút ngắn với quyền truy cập thành viên lớp khi khởi tạo trong> = PHP5.4.

Đã trả lời ngày 16 tháng 12 năm 2013 lúc 22:30Dec 16, 2013 at 22:30

user3108829user3108829user3108829

1.6912 huy hiệu vàng10 Huy hiệu bạc3 Huy hiệu đồng2 gold badges10 silver badges3 bronze badges

4

Nhiều năm trước, tôi đã tìm thấy chức năng này:

function getStartAndEndDate($week, $year) {
  $dto = new DateTime();
  $dto->setISODate($year, $week);
  $ret['week_start'] = $dto->format('Y-m-d');
  $dto->modify('+6 days');
  $ret['week_end'] = $dto->format('Y-m-d');
  return $ret;
}

$week_array = getStartAndEndDate(52,2013);
print_r($week_array);

Đã trả lời ngày 1 tháng 2 năm 2011 lúc 11:41Feb 1, 2011 at 11:41

Roham Rafiiroham RafiiRoham Rafii

2.8137 Huy hiệu vàng34 Huy hiệu bạc44 Huy hiệu đồng7 gold badges34 silver badges44 bronze badges

0

Chúng ta có thể đạt được điều này một cách dễ dàng mà không cần các tính toán bổ sung ngoài những tính toán vốn có của lớp DateTime.

function getStartAndEndDate($year, $week)
{
   return [
      (new DateTime())->setISODate($year, $week)->format('Y-m-d'), //start date
      (new DateTime())->setISODate($year, $week, 7)->format('Y-m-d') //end date
   ];
}

Hàm

$return[0] = $firstDay;
$return[1] = $lastDay;
9 có ba đối số:
function getStartAndEndDate($week, $year) {
  $dto = new DateTime();
  $dto->setISODate($year, $week);
  $ret['week_start'] = $dto->format('Y-m-d');
  $dto->modify('+6 days');
  $ret['week_end'] = $dto->format('Y-m-d');
  return $ret;
}

$week_array = getStartAndEndDate(52,2013);
print_r($week_array);
0,
function getStartAndEndDate($week, $year) {
  $dto = new DateTime();
  $dto->setISODate($year, $week);
  $ret['week_start'] = $dto->format('Y-m-d');
  $dto->modify('+6 days');
  $ret['week_end'] = $dto->format('Y-m-d');
  return $ret;
}

$week_array = getStartAndEndDate(52,2013);
print_r($week_array);
1 và
function getStartAndEndDate($week, $year) {
  $dto = new DateTime();
  $dto->setISODate($year, $week);
  $ret['week_start'] = $dto->format('Y-m-d');
  $dto->modify('+6 days');
  $ret['week_end'] = $dto->format('Y-m-d');
  return $ret;
}

$week_array = getStartAndEndDate(52,2013);
print_r($week_array);
2 tương ứng, trong đó
function getStartAndEndDate($week, $year) {
  $dto = new DateTime();
  $dto->setISODate($year, $week);
  $ret['week_start'] = $dto->format('Y-m-d');
  $dto->modify('+6 days');
  $ret['week_end'] = $dto->format('Y-m-d');
  return $ret;
}

$week_array = getStartAndEndDate(52,2013);
print_r($week_array);
2 mặc định là 1 - ngày đầu tiên trong tuần. Do đó, chúng tôi vượt qua 7 để có được ngày chính xác của ngày thứ 7 của
function getStartAndEndDate($week, $year) {
  $dto = new DateTime();
  $dto->setISODate($year, $week);
  $ret['week_start'] = $dto->format('Y-m-d');
  $dto->modify('+6 days');
  $ret['week_end'] = $dto->format('Y-m-d');
  return $ret;
}

$week_array = getStartAndEndDate(52,2013);
print_r($week_array);
1.

Đã trả lời ngày 21 tháng 4 năm 2016 lúc 8:54Apr 21, 2016 at 8:54

Hướng dẫn how to get start and end date of week in php? - làm thế nào để lấy ngày bắt đầu và ngày kết thúc trong tuần trong php?

0

Giải pháp hơi gọn gàng, sử dụng "[năm] W [Tuần] [ngày]" Định dạng Strtotime:

function getStartAndEndDate($week, $year) {
  // Adding leading zeros for weeks 1 - 9.
  $date_string = $year . 'W' . sprintf('%02d', $week);
  $return[0] = date('Y-n-j', strtotime($date_string));
  $return[1] = date('Y-n-j', strtotime($date_string . '7'));
  return $return;
}

Đã trả lời ngày 20 tháng 1 năm 2013 lúc 23:26Jan 20, 2013 at 23:26

tripper54tripper54tripper54

3462 Huy hiệu bạc6 Huy hiệu Đồng2 silver badges6 bronze badges

cách ngắn nhất để làm điều đó:

function week_date($week, $year){
    $date = new DateTime();
    return "first day of the week is ".$date->setISODate($year, $week, "1")->format('Y-m-d')
    ."and last day of the week is ".$date->setISODate($year, $week, "7")->format('Y-m-d'); 
}
echo week_date(12,2014);

Đã trả lời ngày 5 tháng 7 năm 2015 lúc 15:37Jul 5, 2015 at 15:37

Hướng dẫn how to get start and end date of week in php? - làm thế nào để lấy ngày bắt đầu và ngày kết thúc trong tuần trong php?

Claudiu Creangaclaudiu CreangaClaudiu Creanga

7.65010 Huy hiệu vàng64 Huy hiệu bạc106 Huy hiệu Đồng10 gold badges64 silver badges106 bronze badges

Bạn có thể nhận được một ngày cụ thể trong tuần kể từ ngày thật dưới đây mà tôi có được ngày đầu tiên và ngày cuối cùng

$date = date_create();

// get the first day of the week
date_isodate_set($date, 2019, 1);

    //convert date format and show     
    echo date_format($date, 'Y-m-d') . "\n";

// get the last date of the week
date_isodate_set($date, 2019, 1, 7);

     //convert date format and show        
     echo date_format($date, 'Y-m-d') . "\n";

Đầu ra =>

2018-12-31

2019-01-06

Đã trả lời ngày 5 tháng 3 năm 2019 lúc 5:20Mar 5, 2019 at 5:20

Hướng dẫn how to get start and end date of week in php? - làm thế nào để lấy ngày bắt đầu và ngày kết thúc trong tuần trong php?

Việc tính toán Roham Rafii là sai. Đây là một giải pháp ngắn:

$return[0] = $firstDay;
$return[1] = $lastDay;
0

Nếu bạn muốn ngày cuối cùng của số tuần, bạn có thể thêm

function getStartAndEndDate($week, $year) {
  $dto = new DateTime();
  $dto->setISODate($year, $week);
  $ret['week_start'] = $dto->format('Y-m-d');
  $dto->modify('+6 days');
  $ret['week_end'] = $dto->format('Y-m-d');
  return $ret;
}

$week_array = getStartAndEndDate(52,2013);
print_r($week_array);
5

Đã trả lời ngày 7 tháng 2 năm 2015 lúc 16:45Feb 7, 2015 at 16:45

Hướng dẫn how to get start and end date of week in php? - làm thế nào để lấy ngày bắt đầu và ngày kết thúc trong tuần trong php?

Đây là một câu hỏi cũ, nhưng nhiều câu trả lời được đăng ở trên dường như không chính xác. Tôi đã đưa ra giải pháp của riêng mình:

$return[0] = $firstDay;
$return[1] = $lastDay;
1

Đã trả lời ngày 6 tháng 5 năm 2015 lúc 20:51May 6, 2015 at 20:51

Bezzbezzbezz

1.26817 Huy hiệu bạc28 Huy hiệu đồng17 silver badges28 bronze badges

0

Đầu tiên chúng ta cần một ngày kể từ tuần đó vì vậy bằng cách biết số tuần và biết rằng một tuần có bảy ngày chúng ta sẽ làm như vậy

$return[0] = $firstDay;
$return[1] = $lastDay;
2

Cách này Pickaday sẽ là một ngày trong tuần mong muốn của chúng tôi.

Bây giờ bởi vì chúng ta biết năm chúng ta có thể kiểm tra ngày nào đó. Mọi thứ rất đơn giản nếu chúng ta chỉ cần ngày mới hơn Unix Timestamp, chúng ta sẽ nhận được dấu thời gian UNIX cho ngày đầu tiên của năm và thêm vào đó

function getStartAndEndDate($week, $year) {
  $dto = new DateTime();
  $dto->setISODate($year, $week);
  $ret['week_start'] = $dto->format('Y-m-d');
  $dto->modify('+6 days');
  $ret['week_end'] = $dto->format('Y-m-d');
  return $ret;
}

$week_array = getStartAndEndDate(52,2013);
print_r($week_array);
6 và tất cả đều đơn giản từ đây vì chúng ta có dấu thời gian chúng ta có thể biết ngày nào trong tuần là và tính toán đầu và đuôi của tuần đó cho phù hợp.

Nếu chúng ta muốn tìm hiểu điều tương tự của chúng ta hãy nói tuần thứ 12 năm 1848, chúng ta phải sử dụng một cách tiếp cận khác vì chúng ta không thể có được dấu thời gian. Biết rằng mỗi năm một ngày tiến bộ có nghĩa là 1 ngày (ngày 1 tháng 11 năm ngoái là vào Chủ nhật, năm nay là vào thứ Hai, ngoại lệ cho những năm bước nhảy vọt khi tôi tin tưởng 2 ngày tôi tin, bạn có thể kiểm tra điều đó). Tôi sẽ làm gì nếu năm hơn 1970 hơn là tạo ra sự khác biệt giữa nó và năm cần thiết để biết có bao nhiêu năm, tính toán ngày trong tuần vì Pickaday của tôi là một phần của năm 1970, hãy thay đổi nó .

function getStartAndEndDate($week, $year) {
  $dto = new DateTime();
  $dto->setISODate($year, $week);
  $ret['week_start'] = $dto->format('Y-m-d');
  $dto->modify('+6 days');
  $ret['week_end'] = $dto->format('Y-m-d');
  return $ret;
}

$week_array = getStartAndEndDate(52,2013);
print_r($week_array);
7, trong sự khác biệt. Thay đổi ngày Backwords $ Shiftimes, sau đó bạn sẽ biết ngày nào trong tuần đó là ngày đó những năm trước, sau đó tìm đầu tuần và tuần lễ. Điều tương tự cũng có thể được sử dụng cho tương lai nếu nó có vẻ đơn giản hơn. Hãy thử nó nếu nó hoạt động và cho tôi biết nếu nó không.

Hướng dẫn how to get start and end date of week in php? - làm thế nào để lấy ngày bắt đầu và ngày kết thúc trong tuần trong php?

Nandu

3.0107 Huy hiệu vàng31 Huy hiệu bạc51 Huy hiệu Đồng7 gold badges31 silver badges51 bronze badges

Đã trả lời ngày 1 tháng 2 năm 2011 lúc 10:57Feb 1, 2011 at 10:57

Catalin Marincatalin MarinCatalin Marin

1.2421 Huy hiệu vàng11 Huy hiệu bạc18 Huy hiệu đồng1 gold badge11 silver badges18 bronze badges

1

Đối với tài liệu (vì Google xếp hạng câu hỏi này trước tiên khi tìm kiếm "Php DateTime bắt đầu kết thúc trong tuần này").

Nếu bạn cần StartDate và Enddate cho tuần hiện tại (sử dụng DateTime):current week (using DateTime):

$return[0] = $firstDay;
$return[1] = $lastDay;
3

Hy vọng điều này sẽ giúp.

Đã trả lời ngày 28 tháng 6 năm 2018 lúc 9:44Jun 28, 2018 at 9:44

Hướng dẫn how to get start and end date of week in php? - làm thế nào để lấy ngày bắt đầu và ngày kết thúc trong tuần trong php?

AvataravatarAvatar

Huy hiệu vàng 13.4K88 gold badges112 silver badges185 bronze badges

Bạn đã thử ngày tương đối PHP chưa? Có thể đấy.

Đã trả lời ngày 1 tháng 2 năm 2011 lúc 10:33Feb 1, 2011 at 10:33

MikelmikelMikel

24.1k8 Huy hiệu vàng63 Huy hiệu bạc66 Huy hiệu Đồng8 gold badges63 silver badges66 bronze badges

2

Ngay cả khi bạn không muốn sử dụng một ngày cụ thể, bạn không thể thoát khỏi nó. Bạn có thể tính một tuần chỉ dựa trên ngày.

Steps:

  1. Nhận ngày đầu tiên của năm
  2. Quyết định khi tuần đầu tiên bắt đầu (có một số quy tắc bao gồm thứ Năm đầu tiên nếu tôi nhớ.
  3. Thêm một số tuần (tham số đầu tiên của bạn). Zend_date có hàm ADD () trong đó bạn có thể thêm tuần chẳng hạn. Điều này sẽ cung cấp cho bạn ngày đầu tiên trong tuần.
  4. bù đắp và nhận được ngày cuối cùng.

Tôi sẽ khuyên bạn nên làm việc với một sistem ngày nhất quán như zend_date hoặc ngày lê.

Đã trả lời ngày 1 tháng 2 năm 2011 lúc 11:26Feb 1, 2011 at 11:26

Elzo Valugielzo ValugiElzo Valugi

26.4K14 Huy hiệu vàng91 Huy hiệu bạc114 Huy hiệu đồng14 gold badges91 silver badges114 bronze badges

$return[0] = $firstDay;
$return[1] = $lastDay;
4

Đã trả lời ngày 14 tháng 8 năm 2013 lúc 18:44Aug 14, 2013 at 18:44

1

$return[0] = $firstDay;
$return[1] = $lastDay;
5

Sẽ in

$return[0] = $firstDay;
$return[1] = $lastDay;
6

Hy vọng sẽ giúp

Đã trả lời ngày 21 tháng 6 năm 2018 lúc 9:28Jun 21, 2018 at 9:28

"Ngày đầu tiên trong tuần" là chủ quan. Một số nền văn hóa sử dụng "Thứ Hai" Một số người khác "Chủ nhật", có lẽ những người khác điều gì khác?

Đối với mục đích của tôi, tôi muốn ngày đầu tiên trong tuần là "Chủ nhật" và ngày cuối cùng trong tuần là "Thứ Bảy".

Ngoài ra, sử dụng

function getStartAndEndDate($week, $year) {
  $dto = new DateTime();
  $dto->setISODate($year, $week);
  $ret['week_start'] = $dto->format('Y-m-d');
  $dto->modify('+6 days');
  $ret['week_end'] = $dto->format('Y-m-d');
  return $ret;
}

$week_array = getStartAndEndDate(52,2013);
print_r($week_array);
8 không có đối số sẽ mặc định là "ngay bây giờ" bao gồm thời gian hiện tại. Phương pháp sau đây sẽ bỏ qua thời gian hiện tại bằng cách chỉ định "ngày nay" trong hàm tạo DateTime.

Hơn nữa, chuỗi "Chủ nhật tuần này" dường như không đáng tin cậy. Nó thực sự sẽ trở lại vào Chủ nhật tuần tới (theo quan điểm của tôi về một tuần là gì).

Tôi đã xây dựng một phương thức trả về một đối tượng PHP chứa hai đối tượng DateTime. Một cho ngày đầu tiên (Chủ nhật) của tuần đã cho, ngày thứ hai cho ngày cuối cùng (thứ bảy) của tuần đã cho.

$return[0] = $firstDay;
$return[1] = $lastDay;
7

Đã trả lời ngày 12 tháng 8 năm 2019 lúc 15:16Aug 12, 2019 at 15:16

Jeremysawesmyjeremysawiejeremysawesome

6.8555 huy hiệu vàng33 Huy hiệu bạc37 Huy hiệu đồng5 gold badges33 silver badges37 bronze badges

Làm thế nào tôi có thể nhận được ngày bắt đầu và ngày kết thúc trong PHP?

Ngày chức năng PHP ($ date1, $ date2) {$ date1 = strtotime ($ date1); $ date2 = strtotime ($ date2); trả lại ($ ngày2 - $ date1) / (24 * 60 * 60); } $ date1 = '20100820'; $ date2 = '20100930'; Ngày Echo ($ ngày 1, $ ngày2); ?>

Làm thế nào để có được ngày từ ngày trong tuần trong PHP?

W - một đại diện số của ngày (0 cho Chủ nhật, 6 cho thứ bảy) z - ngày trong năm (từ 0 đến 365)Đại diện văn bản của một tháng (từ tháng 1 đến tháng 12)

Làm thế nào để bạn nhận được ngày trong tuần này và phạm vi trong PHP?

PHP Nhận phạm vi ngày trong tuần này..
$ Thứ Hai = Strtotime ('Thứ Hai tuần trước', Strtotime ('Ngày mai')) ;.
$ Chủ nhật = Strtotime ('+6 ngày', $ Thứ Hai) ;.
tiếng vang "".Ngày ('D-M-Y', $ Thứ Hai)." đến " .Ngày ('D-M-Y', $ Chủ nhật)."";.

Làm thế nào để bạn xác định ngày đầu tiên trong tuần?

Để có được ngày đầu tiên của tuần hiện tại, hãy nhận ngày trong tháng, trừ đi ngày trong tuần và thêm 1 để xem xét thứ Hai vào ngày đầu tiên của tuần.get the day of the month, subtract the day of the week and add 1 to consider Monday the first day of the week.