Làm cách nào để trừ DateTime trong PHP?

Chào mừng bạn đến với hướng dẫn nhanh về cách cộng và trừ ngày, tuần, tháng thành một ngày trong PHP. Vì vậy, bạn cần thực hiện một số "yoga hẹn hò" trong dự án của mình?

Có 3 cách phổ biến để cộng và trừ một ngày trong PHP

  1. Tạo một đối tượng ngày giờ, sau đó sử dụng chức năng sửa đổi
    • $dt = new DateTime("2019-08-14");
    • $dt->modify("+4 days");
    • $dt->modify("-1 week");
  2. Sử dụng hàm strtotime()
    • $date = "2019-08-14";
    • $add = date("d M Y", strtotime($date . "+1 week"));
    • minus = date("d M Y", strtotime($date . "-2 months"));
  3. Tính toán thủ công bằng cách sử dụng dấu thời gian Unix
    • ";
       
      // (B) ADD DAYS WEEKS MONTHS
      $added = date("d M Y", strtotime($date . "+4 days"));
      echo "+4 DAYS: $added
      "; $added = date("d M Y", strtotime($date . "+2 weeks")); echo "+2 WEEKS: $added
      "; $added = date("d M Y", strtotime($date . "+1 month")); echo "+1 MONTH: $added
      "; // (C) SUBTRACT DAYS WEEKS MONTHS $added = date("d M Y", strtotime($date . "-4 days")); echo "-4 DAYS: $added
      "; $added = date("d M Y", strtotime($date . "-2 weeks")); echo "-2 WEEKS: $added
      "; $added = date("d M Y", strtotime($date . "-1 month")); echo "-1 MONTH: $added
      ";
      0
    • ";
       
      // (B) ADD DAYS WEEKS MONTHS
      $added = date("d M Y", strtotime($date . "+4 days"));
      echo "+4 DAYS: $added
      "; $added = date("d M Y", strtotime($date . "+2 weeks")); echo "+2 WEEKS: $added
      "; $added = date("d M Y", strtotime($date . "+1 month")); echo "+1 MONTH: $added
      "; // (C) SUBTRACT DAYS WEEKS MONTHS $added = date("d M Y", strtotime($date . "-4 days")); echo "-4 DAYS: $added
      "; $added = date("d M Y", strtotime($date . "-2 weeks")); echo "-2 WEEKS: $added
      "; $added = date("d M Y", strtotime($date . "-1 month")); echo "-1 MONTH: $added
      ";
      1
    • ";
       
      // (B) ADD DAYS WEEKS MONTHS
      $added = date("d M Y", strtotime($date . "+4 days"));
      echo "+4 DAYS: $added
      "; $added = date("d M Y", strtotime($date . "+2 weeks")); echo "+2 WEEKS: $added
      "; $added = date("d M Y", strtotime($date . "+1 month")); echo "+1 MONTH: $added
      "; // (C) SUBTRACT DAYS WEEKS MONTHS $added = date("d M Y", strtotime($date . "-4 days")); echo "-4 DAYS: $added
      "; $added = date("d M Y", strtotime($date . "-2 weeks")); echo "-2 WEEKS: $added
      "; $added = date("d M Y", strtotime($date . "-1 month")); echo "-1 MONTH: $added
      ";
      2

Điều đó bao gồm những điều cơ bản, nhưng chúng ta hãy xem qua các ví dụ khác trong hướng dẫn này – Đọc tiếp

ⓘ Tôi đã bao gồm một tệp zip chứa tất cả mã nguồn ví dụ khi bắt đầu hướng dẫn này, vì vậy bạn không cần phải sao chép-dán mọi thứ… Hoặc nếu bạn chỉ muốn đi sâu vào

 

 

TLDR – TRANG TRÌNH BÀY NHANH

Tải xuống & Ghi chú

 

TẢI XUỐNG & LƯU Ý

Đầu tiên, đây là liên kết tải xuống mã ví dụ như đã hứa

 

GHI CHÚ NHANH

Nếu bạn phát hiện ra một lỗi, hãy bình luận bên dưới. Tôi cũng cố gắng trả lời các câu hỏi ngắn, nhưng đó là một người so với cả thế giới… Nếu bạn cần câu trả lời gấp, vui lòng xem danh sách các trang web của tôi để được trợ giúp về lập trình

 

MÃ VÍ DỤ TẢI XUỐNG

Nhấp vào đây để tải xuống mã nguồn, tôi đã phát hành nó theo giấy phép MIT, vì vậy hãy thoải mái xây dựng trên mã nguồn hoặc sử dụng nó trong dự án của riêng bạn

 

 

THÊM VÀ TRỪ ĐẾN NGÀY

Được rồi, bây giờ chúng ta hãy đi vào các ví dụ về cách cộng/trừ ngày, tuần, tháng cho một ngày trong PHP

 

1) NGÀY GIỜ ĐỐI TƯỢNG

1 ngày giờ. php

format("d M Y") . "
"; // (B) ADD DAYS WEEKS MONTHS $dt->modify("+4 days"); echo "+4 DAYS: " . $dt->format("d M Y") . "
"; $dt->modify("+2 weeks"); echo "+2 WEEKS: " . $dt->format("d M Y") . "
"; $dt->modify("+1 month"); echo "+1 MONTH: " . $dt->format("d M Y") . "
"; // (C) SUBTRACT DAYS WEEKS MONTHS $dt->modify("-2 days"); echo "-2 DAYS: " . $dt->format("d M Y") . "
"; $dt->modify("-1 week"); echo "-1 WEEK: " . $dt->format("d M Y") . "
"; $dt->modify("-2 months"); echo "-2 MONTHS: " . $dt->format("d M Y") . "
";

Điều này nên tự giải thích. Đối tượng

";
 
// (B) ADD DAYS WEEKS MONTHS
$added = date("d M Y", strtotime($date . "+4 days"));
echo "+4 DAYS: $added
"; $added = date("d M Y", strtotime($date . "+2 weeks")); echo "+2 WEEKS: $added
"; $added = date("d M Y", strtotime($date . "+1 month")); echo "+1 MONTH: $added
"; // (C) SUBTRACT DAYS WEEKS MONTHS $added = date("d M Y", strtotime($date . "-4 days")); echo "-4 DAYS: $added
"; $added = date("d M Y", strtotime($date . "-2 weeks")); echo "-2 WEEKS: $added
"; $added = date("d M Y", strtotime($date . "-1 month")); echo "-1 MONTH: $added
";
3 có lẽ là một trong những cách dễ dàng và “con người” nhất để thao túng một ngày nhất định. Chỉ cần sử dụng hàm
";
 
// (B) ADD DAYS WEEKS MONTHS
$added = date("d M Y", strtotime($date . "+4 days"));
echo "+4 DAYS: $added
"; $added = date("d M Y", strtotime($date . "+2 weeks")); echo "+2 WEEKS: $added
"; $added = date("d M Y", strtotime($date . "+1 month")); echo "+1 MONTH: $added
"; // (C) SUBTRACT DAYS WEEKS MONTHS $added = date("d M Y", strtotime($date . "-4 days")); echo "-4 DAYS: $added
"; $added = date("d M Y", strtotime($date . "-2 weeks")); echo "-2 WEEKS: $added
"; $added = date("d M Y", strtotime($date . "-1 month")); echo "-1 MONTH: $added
";
4 để cộng hoặc trừ phạm vi ngày, tuần, tháng, năm từ dấu thời gian

 

 

2) CHUỖI THỜI GIAN

2 nhịp. php

";
 
// (B) ADD DAYS WEEKS MONTHS
$added = date("d M Y", strtotime($date . "+4 days"));
echo "+4 DAYS: $added
"; $added = date("d M Y", strtotime($date . "+2 weeks")); echo "+2 WEEKS: $added
"; $added = date("d M Y", strtotime($date . "+1 month")); echo "+1 MONTH: $added
"; // (C) SUBTRACT DAYS WEEKS MONTHS $added = date("d M Y", strtotime($date . "-4 days")); echo "-4 DAYS: $added
"; $added = date("d M Y", strtotime($date . "-2 weeks")); echo "-2 WEEKS: $added
"; $added = date("d M Y", strtotime($date . "-1 month")); echo "-1 MONTH: $added
";

Đúng, một cái đơn giản khác. Đây thực sự là sự kết hợp của việc sử dụng hàm strtotime() để cộng/trừ ngày, sau đó sử dụng

";
 
// (B) ADD DAYS WEEKS MONTHS
$added = date("d M Y", strtotime($date . "+4 days"));
echo "+4 DAYS: $added
"; $added = date("d M Y", strtotime($date . "+2 weeks")); echo "+2 WEEKS: $added
"; $added = date("d M Y", strtotime($date . "+1 month")); echo "+1 MONTH: $added
"; // (C) SUBTRACT DAYS WEEKS MONTHS $added = date("d M Y", strtotime($date . "-4 days")); echo "-4 DAYS: $added
"; $added = date("d M Y", strtotime($date . "-2 weeks")); echo "-2 WEEKS: $added
"; $added = date("d M Y", strtotime($date . "-1 month")); echo "-1 MONTH: $added
";
6 để lấy định dạng ngày mà bạn muốn. Tôi sẽ để lại các liên kết trong phần tóm tắt bên dưới về cách hoạt động của
";
 
// (B) ADD DAYS WEEKS MONTHS
$added = date("d M Y", strtotime($date . "+4 days"));
echo "+4 DAYS: $added
"; $added = date("d M Y", strtotime($date . "+2 weeks")); echo "+2 WEEKS: $added
"; $added = date("d M Y", strtotime($date . "+1 month")); echo "+1 MONTH: $added
"; // (C) SUBTRACT DAYS WEEKS MONTHS $added = date("d M Y", strtotime($date . "-4 days")); echo "-4 DAYS: $added
"; $added = date("d M Y", strtotime($date . "-2 weeks")); echo "-2 WEEKS: $added
"; $added = date("d M Y", strtotime($date . "-1 month")); echo "-1 MONTH: $added
";
6

 

 

3) DẤU THỜI GIAN UNIX

3-unix. php

";
echo "+2 WEEKS: " . date("d M Y", $unix + (14*$day)) . "
"; // BE CAREFUL: 1 MONTH MAY NOT BE EXACTLY 30 DAYS echo "+1 MONTH: " . date("d M Y", $unix + (30*$day)) . "
"; // (C) SUBTRACT DAYS WEEKS MONTHS echo "-3 DAYS: " . date("d M Y", $unix - (3*$day)) . "
"; echo "-2 WEEKS: " . date("d M Y", $unix - (14*$day)) . "
"; echo "-1 MONTH: " . date("d M Y", $unix - (30*$day)) . "
";

Cuối cùng, dành cho những bạn chưa biết –

";
 
// (B) ADD DAYS WEEKS MONTHS
$added = date("d M Y", strtotime($date . "+4 days"));
echo "+4 DAYS: $added
"; $added = date("d M Y", strtotime($date . "+2 weeks")); echo "+2 WEEKS: $added
"; $added = date("d M Y", strtotime($date . "+1 month")); echo "+1 MONTH: $added
"; // (C) SUBTRACT DAYS WEEKS MONTHS $added = date("d M Y", strtotime($date . "-4 days")); echo "-4 DAYS: $added
"; $added = date("d M Y", strtotime($date . "-2 weeks")); echo "-2 WEEKS: $added
"; $added = date("d M Y", strtotime($date . "-1 month")); echo "-1 MONTH: $added
";
8thực sự trả về dấu thời gian Unix. Tức là số giây đã trôi qua kể từ ngày 1 tháng 1 năm 1970 theo giờ UTC. Vì vậy, để cộng và trừ ngày/tuần/tháng với Dấu thời gian Unix là một quá trình rất toán học

  • Về cơ bản, một ngày có 24 giờ (hoặc 86400 giây)
  • Vì vậy, ví dụ: nếu chúng tôi muốn thêm 3 ngày vào dấu thời gian, thì đó sẽ là
    ";
     
    // (B) ADD DAYS WEEKS MONTHS
    $added = date("d M Y", strtotime($date . "+4 days"));
    echo "+4 DAYS: $added
    "; $added = date("d M Y", strtotime($date . "+2 weeks")); echo "+2 WEEKS: $added
    "; $added = date("d M Y", strtotime($date . "+1 month")); echo "+1 MONTH: $added
    "; // (C) SUBTRACT DAYS WEEKS MONTHS $added = date("d M Y", strtotime($date . "-4 days")); echo "-4 DAYS: $added
    "; $added = date("d M Y", strtotime($date . "-2 weeks")); echo "-2 WEEKS: $added
    "; $added = date("d M Y", strtotime($date . "-1 month")); echo "-1 MONTH: $added
    ";
    9;
  • Một ví dụ khác, nếu chúng ta muốn thêm 2 tuần, đó sẽ là 14 ngày –
    ";
    echo "+2 WEEKS: " . date("d M Y", $unix + (14*$day)) . "
    "; // BE CAREFUL: 1 MONTH MAY NOT BE EXACTLY 30 DAYS echo "+1 MONTH: " . date("d M Y", $unix + (30*$day)) . "
    "; // (C) SUBTRACT DAYS WEEKS MONTHS echo "-3 DAYS: " . date("d M Y", $unix - (3*$day)) . "
    "; echo "-2 WEEKS: " . date("d M Y", $unix - (14*$day)) . "
    "; echo "-1 MONTH: " . date("d M Y", $unix - (30*$day)) . "
    ";
    0

Yep, bạn bắt trôi

 

 

BIT BỔ SUNG & LIÊN KẾT

Đó là tất cả cho hướng dẫn này, và đây là một phần nhỏ về một số tính năng bổ sung có thể hữu ích cho bạn

 

CÁI NÀO TỐT NHẤT?

Cá nhân tôi nghiêng về

";
echo "+2 WEEKS: " . date("d M Y", $unix + (14*$day)) . "
"; // BE CAREFUL: 1 MONTH MAY NOT BE EXACTLY 30 DAYS echo "+1 MONTH: " . date("d M Y", $unix + (30*$day)) . "
"; // (C) SUBTRACT DAYS WEEKS MONTHS echo "-3 DAYS: " . date("d M Y", $unix - (3*$day)) . "
"; echo "-2 WEEKS: " . date("d M Y", $unix - (14*$day)) . "
"; echo "-1 MONTH: " . date("d M Y", $unix - (30*$day)) . "
";
1 và
";
echo "+2 WEEKS: " . date("d M Y", $unix + (14*$day)) . "
"; // BE CAREFUL: 1 MONTH MAY NOT BE EXACTLY 30 DAYS echo "+1 MONTH: " . date("d M Y", $unix + (30*$day)) . "
"; // (C) SUBTRACT DAYS WEEKS MONTHS echo "-3 DAYS: " . date("d M Y", $unix - (3*$day)) . "
"; echo "-2 WEEKS: " . date("d M Y", $unix - (14*$day)) . "
"; echo "-1 MONTH: " . date("d M Y", $unix - (30*$day)) . "
";
2 cho thuận tiện. Nhưng hiệu suất của 2 cái này không thực sự tuyệt vời… Tính toán thủ công với dấu thời gian Unix không hoàn toàn tệ và nó có lợi thế khi xử lý theo vòng lặp –
";
echo "+2 WEEKS: " . date("d M Y", $unix + (14*$day)) . "
"; // BE CAREFUL: 1 MONTH MAY NOT BE EXACTLY 30 DAYS echo "+1 MONTH: " . date("d M Y", $unix + (30*$day)) . "
"; // (C) SUBTRACT DAYS WEEKS MONTHS echo "-3 DAYS: " . date("d M Y", $unix - (3*$day)) . "
"; echo "-2 WEEKS: " . date("d M Y", $unix - (14*$day)) . "
"; echo "-1 MONTH: " . date("d M Y", $unix - (30*$day)) . "
";
3

 

TÓM TẮT – TẤT CẢ CÁC CHỨC NĂNG NGÀY/GIỜ THÔNG DỤNG

FunctionDescriptionReference
";
echo "+2 WEEKS: " . date("d M Y", $unix + (14*$day)) . "
"; // BE CAREFUL: 1 MONTH MAY NOT BE EXACTLY 30 DAYS echo "+1 MONTH: " . date("d M Y", $unix + (30*$day)) . "
"; // (C) SUBTRACT DAYS WEEKS MONTHS echo "-3 DAYS: " . date("d M Y", $unix - (3*$day)) . "
"; echo "-2 WEEKS: " . date("d M Y", $unix - (14*$day)) . "
"; echo "-1 MONTH: " . date("d M Y", $unix - (30*$day)) . "
";
4Tạo một đối tượng ngày giờ mới. Lấy thời gian máy chủ hiện tại theo mặc định hoặc bạn có thể cung cấp chuỗi ngày/giờ. Bấm vào đây
";
echo "+2 WEEKS: " . date("d M Y", $unix + (14*$day)) . "
"; // BE CAREFUL: 1 MONTH MAY NOT BE EXACTLY 30 DAYS echo "+1 MONTH: " . date("d M Y", $unix + (30*$day)) . "
"; // (C) SUBTRACT DAYS WEEKS MONTHS echo "-3 DAYS: " . date("d M Y", $unix - (3*$day)) . "
"; echo "-2 WEEKS: " . date("d M Y", $unix - (14*$day)) . "
"; echo "-1 MONTH: " . date("d M Y", $unix - (30*$day)) . "
";
5Định dạng đối tượng ngày-giờ. Tiêu chuẩn được xác định trước

Định dạng thủ công

";
echo "+2 WEEKS: " . date("d M Y", $unix + (14*$day)) . "
"; // BE CAREFUL: 1 MONTH MAY NOT BE EXACTLY 30 DAYS echo "+1 MONTH: " . date("d M Y", $unix + (30*$day)) . "
"; // (C) SUBTRACT DAYS WEEKS MONTHS echo "-3 DAYS: " . date("d M Y", $unix - (3*$day)) . "
"; echo "-2 WEEKS: " . date("d M Y", $unix - (14*$day)) . "
"; echo "-1 MONTH: " . date("d M Y", $unix - (30*$day)) . "
";
6Thêm phút, giờ, ngày, tuần, tháng, năm, kể từ ngày/giờ đã cho. Bấm vào đây
";
echo "+2 WEEKS: " . date("d M Y", $unix + (14*$day)) . "
"; // BE CAREFUL: 1 MONTH MAY NOT BE EXACTLY 30 DAYS echo "+1 MONTH: " . date("d M Y", $unix + (30*$day)) . "
"; // (C) SUBTRACT DAYS WEEKS MONTHS echo "-3 DAYS: " . date("d M Y", $unix - (3*$day)) . "
"; echo "-2 WEEKS: " . date("d M Y", $unix - (14*$day)) . "
"; echo "-1 MONTH: " . date("d M Y", $unix - (30*$day)) . "
";
7Nhận dấu thời gian Unix từ chuỗi ngày đã cho. Bấm vào đây

 

BẢNG CHEAT INFOGRAPHIC

Cảm ơn bạn đã đọc, và chúng tôi đã đi đến phần cuối của hướng dẫn này. Tôi hy vọng rằng nó đã giúp bạn hiểu rõ hơn và nếu bạn muốn chia sẻ bất cứ điều gì với hướng dẫn này, vui lòng bình luận bên dưới. Chúc may mắn và mã hóa hạnh phúc

Làm cách nào để trừ ngày và giờ trong PHP?

Hàm date_sub() trừ một số ngày, tháng, năm, giờ, phút và giây cho một ngày.

Làm cách nào để trừ một ngày khác trong ngày PHP?

The date_diff() là một hàm PHP dựng sẵn được sử dụng để lấy sự khác biệt giữa hai ngày. Nó trả về một đối tượng DateInterval khi thành công hoặc sai khi thất bại. Hàm date_diff() chấp nhận hai đối tượng DateTime của hai ngày bị trừ.

Làm cách nào để trừ 1 giờ từ DateTime trong PHP?

Để in thời gian một giờ trước, bạn cần trừ -1 giờ. Sử dụng phương thức strtotime() và đặt giá trị phép trừ trong đó i. e. -1 cho thời gian 1 giờ trước , -2 cho thời gian 2 giờ trước, v.v.

Làm cách nào để trừ 15 phút từ DateTime trong PHP?

Để trừ 15 phút bạn có thể làm. date('Y-m-d H. i. s', (thời gian() - 60 * 15));