Cộng trừ ngày tháng trong PHP

Như các bạn đã biết PHP hỗ trợ khá nhiều hàm để xử lý các vấn đề liên quan đến thời gian (các bạn có thể tham khảo tại đây), nhưng đôi khi nhiều quá làm người dùng lúng túng không biết nên sử dụng hàm nào. Ở bài viết trước, tôi đã dùng hàm strtotime() để so sánh các ngày với nhau và hôm nay tôi sẽ kết hợp hàm đó với hàm strftime() để tính toán xem nếu lấy ngày hiện tại cộng thêm 1 tuần/1 tháng / 1 quý…. thì sẽ là ngày nào.

Các bạn có thể tham khảo đoạn code dưới đây:

<?php
// Lấy ngày hiện tại
$today = date('Y-m-d');
echo "Today is ". $today;
// Cộng thêm 1 tuần
$week = strtotime(date("Y-m-d", strtotime($today)) . " +1 week");
$week = strftime("%Y-%m-%d", $week);
echo "A week later is ". $week;
// Cộng thêm 1 tháng
$month = strtotime(date("Y-m-d", strtotime($today)) . " +1 month");
$month = strftime("%Y-%m-%d", $month);
echo "A month later is ". $month; 
?>

Kết quả:

Today is 2011/08/16
A week later is 2011/08/23
A month later is 2011/09/16

Tổng kết,

Việc sử dụng uyển chuyển giữa các hàm sẽ giúp bạn giải quyết khá nhiều trường hợp khiến bạn đau đầu. Nếu bạn quen với việc tra hàm trên PHP Manual, tôi khuyên nên tham khảo thêm trang w3schools.com , tuy là trang tiếng Anh nhưng trang web sử dụng những từ đơn giản và có ví dụ rất dễ hiểu. Tôi cũng hay vào trang web này để tìm tư liệu cho các bài viết. Chúc vui !

Tấn Việt

Tôi lập trang web này để thỏa mãn sở thích viết cái gì đó vui vui khi rãnh rỗi và đồng thời cũng chia sẻ những gì tôi biết hoặc đọc đâu đó trên mạng về Lập trình web. Tôi hi vọng những bài viết này sẽ giúp ích cho các bạn. Thân ái!

You may also like…

5 Responses

  1. ngọc hoa says:

    Nếu ta không dùng ngày hiện tại để cộng, trừ thì sao ha ban?
    Vd như tôi muốn biết ngày 12/8/2010 trừ 30 ngày (tôi muốn tìm ngày trước đó 1 tháng) là ngày mấy? Trả về kiểu ngày tháng năm. Mong bạn giúp! Chân thành cảm ơn!

    • Tấn Việt says:

      Mình đã viết 1 đoạn code nhỏ theo yêu cầu của bạn, bạn xem đây có phải là điều bạn cần không nhé 🙂
      [ccew_php]
      < ?php $input_date = '12/08/2010'; $month = strtotime(date("d/m/Y", strtotime($input_date)) . " -1 month"); $month = strftime("%d/%m/%Y", $month); echo "A month previous is ". $month . "
      “;
      ?>
      [/ccew_php]

  2. shiori says:

    Bài viết rất hay!
    CHo mình hỏi chút là. Nhập vào ngày bắt đầu là ngày 15/7/2012 và ngày kết thúc là ngày 20/7/2012. Vậy làm sao để biết được từ ngày 15 đến ngày 20 là 5 ngày?? và nếu ngày kết thúc sang 1 tháng mới là ngày 20/8/2012 thì sẽ tính thế nào ?

    Ae nào biết giúp mình với. Thanks

  3. Hùng says:

    Chào tuấn việt những bài chia sẻ của bạn rất hay. Không biết bạn có từng nghiên cứu việc lấy dữ liệu từ máy quét thẻ hoặc vân tay sang cơ sở msql chưa? Dùng bên php để gọi mã quét được từ máy quét thẻ hay vân tay để hiển thị thông tin nhân viên. Mình xem hoài không thấy ai hướng dẫn hết. Bạn có nghiên cứu thì hướng dẫn mình với