Học các hàm xử lý ngày tháng trong PHP

Học các hàm xử lý ngày tháng trong PHP là vấn đề được nhiều lập trình viên quan tâm, bởi những kiến thức trên trường lớp là không đủ, vì vậy bài Học các hàm xử lý ngày tháng trong PHP sẽ chia sẻ tới bạn nhiều thông tin hữu ích

Mọi người vẫn hỏi tôi về việc học lập trình nói chung và PHP nói riêng có cần năng khiếu hay quá khó để tiếp cận hay không. Thì tôi có thể trả lời rằng, học lập trình cũng như việc bạn học tiếng Anh hay bất kỳ một ngôn ngữ khác, bởi lập trình...là ngôn ngữ của máy tính, để máy tính đọc và máy tính thực hiện theo yêu cầu của mình, bạn thích là học được.

Vấn đề xử lý ngày tháng cực kì quan trọng khi bạn xử lý với các bài viết và đăng lên website. Ví dụ bạn cần in ra ngày tháng đăng bài viết hiển thị theo kiểu ngày / tháng / năm hoặc ngày - tháng -năm thì bắt buộc bạn phải biết cách sử dụng các hàm xử lý ngày tháng trong PHP thì mới làm được. Đó là vấn đề căn bản, vẫn còn nhiều vấn đề và tùy thuộc vào từng bài toán mà bạn sẽ có những hướng làm khác nhau.

Và trong bài này chúng ta cùng tìm hiểu một chút về cách xử lý ngày tháng trong PHP nhé.

1. Thiết lập time_zone tại Việt Nam

Để cấu hình thời gian đúng theo giờ Việt Nam thì bắt buộc ban phải thiết lập time zone cho nó. Để thiết lập time zone thì ta sử dụng cú pháp như sau:

 

  date_default_timezone_set('Tên Time Zone'); 

 

Lệnh này sẽ ảnh hưởng tới tất cả các lệnh xử lý ngày tháng phía bên dưới nó nên để chắc chắn thì bạn nên để lệnh này ở đầu file của chương trình nhé. Ví dụ khi làm việc với Codeigniter Framework thì bạn nên để nó ở file index.php vì như vậy nó sẽ ảnh hưởng tới mọi controllers.

Để thiết lập time_zone ở Việt Nam thì bạn sử dụng lệnh sau:

 

  date_default_timezone_set('Asia/Ho_Chi_Minh'); 

 

Để xem danh sách time zone thì bạn sử dụng đoạn code sau:

 

  $timezone = DateTimeZone::listIdentifiers() ;
  foreach ($timezone as $item){
      echo $item . '<br/>';
  } 

 

Chạy lên và bạn thử tìm từ khóa "Asia/Ho_Chi_Minh" thì nó sẽ có trong danh sách đó đấy :)

2. Định dạng ngày tháng với hàm date() trong PHP

Hàm date dùng để chuyển đổi thời gian theo format mà lập trình viên mong muốn, cú pháp như sau:

 

  date ($format, $timestamp = 'time()') 

 

Trong đó:

  • $format là định dạng mà hàm này sẽ trả về
  • $timestamp là thời gian truyền vào (kiểu INT), mặc định nó sẽ lấy thời gian hiện tại (chính là hàm time()).

Về danh sách các $format thì bạn hãy vào link này nhé, khá chi tiết và đầy đủ.

Sau đây mình sẽ liệt kê một số định dạng hay sử dụng nhất.

  • d: trả về ngày tháng (số)
  • D: trả về ngày của tháng (tiếng Anh)
  • m: trả về tháng của năm (số)
  • M: Trả về tháng của năm (tiếng Anh)
  • y: trả trả về năm (2 số cuối của năm)
  • Y: trả về năm đầy đủ 4 số
  • H: trả về số giờ (kiểu 24h)
  • h: trả về số giờ (kiểu 6h)
  • i: trả về số phút
  • s: trả về số giây
  • c: trả về thời gian kiểu ISO 8601, thường dùng tạo cho thẻ meta publish time trong SEO
  • .. Còn nữa nhưng bạn hãy vào linh mình cung cấp ở trên để xem nhé.

Ví dụ: Lấy thời gian hiện tại theo định dạng ngày/tháng/năm - giờ:phút:giây

Chiếu theo các định dạng ở danh sách trên thì ta sẽ có chuỗi format như sau: d/m/Y - H:i:s

Vậy mã code PHP sẽ là:

 

  echo date('d/m/Y - H:i:s'); 

 

Chạy lên tại thời điểm mình viết bài này sẽ có kết quả là: 07/05/2016 - 19:02:36.

3. Xử lý ngày tháng nâng cao trong PHP

Bây giờ chúng ta tìm hiểu một số cách xử lý nâng cao hay sử dụng nhất.

Truyền chuỗi vào định dạng format

Nếu bạn muốn truyền một chuỗi vào định dạng format thì tôi khuyên bạn nên đặt dấu / đằng trước mỗi ký tự, điều này sẽ giúp chuỗi không trùng với format key của PHP. Ví dụ bạn truyền vào format chuỗi "Bây giờ là H giờ" thì chữ i chính là số phút nên kết quả sẽ không như mong đợi.

 

  echo date('Bây giờ là H giờ'); 

 

Chạy lên kết quả sẽ là: 840â16 710ờ Saturdayà 19 710ờ

Nhưng nếu sửa code lại như sau:

 

  echo date('\B\â\y \g\i\ờ \l\à H \g\i\ờ'); 

 

Thì kết quả sẽ là: Bây giờ là 19 giờ

Chuyển đổi thời gian sang kiểu INT

Để chuyển đổi thời gian sang kiểu INT thì ta sử dụng hàm strtotime($time), ví dụ:

 

  echo strtotime(date('Y-m-d H:i:s')); 

 

Kết quả trong máy mình sẽ là:1462649606

Định dạng ngày tháng trong MySQL

Để lưu đúng định dạng ngày tháng trong MySQL thì bạn sử dụng format như sau:

 

  date('Y-m-d H:i:s') 

 

Nếu bạn muốn lưu trữ ngày tạo bài viết hoặc ngày comment hoặc ngày thực hiện một thao tác gì đó thì hãy sử dụng cú pháp đó nhé.

Xử lý cộng trừ ngày tháng với hàm mktime()

Hàm mktime sẽ tính toán đưa ra ngày chính xác bởi các tham số truyền vào, cú pháp như sau:

 

  mktime ($hour, $minute, $second, $month, $day , $year); 

 

Lưu ý: Hàm này sẽ trả về thời gian kiểu INT nên bạn phải sử dụng hàm date() để chuyển đổi ra định dạng mong muốn.

Ví dụ: Cho ngày 20/11/2016, hãy cộng thêm 12 ngày nữa để xem kết quả ra bao nhiêu.

 

  $dateint = mktime(0, 0, 0, 11, (20 + 12), 2016);
  echo date('d/m/Y', $dateint); // 02/12/2016 

 

Bạn để ý nếu ngày 20 mà công thêm 12 ngày thì sẽ ra là ngày 32, lúc này tháng phải thăng lên 1 nên kết quả sẽ là: 02/12/2016

Ví dụ: Xem ngày mai, tháng tới, năm tới sẽ có ngày tháng năm bao nhiêu.

 

  $tomorrow  = mktime(0, 0, 0, date("m")  , date("d")+1, date("Y"));
  $lastmonth = mktime(0, 0, 0, date("m")-1, date("d"),   date("Y"));
  $nextyear  = mktime(0, 0, 0, date("m"),   date("d"),   date("Y")+1); 

 

4. Lời kết

Nói về ngày tháng trong PHP thì có rất nhiều hàm và nhiều cách viết khác nhau, vì vậy nội dung trong bài mình không thể trình bày hết được nên nếu trong quá trình học và lập trình bạn hãy sử dụng Google để tra cứu thêm thông tin nhé. Hy vọng qua bài tìm hiểu cách xử lý ngày tháng trong PHP này sẽ giúp được phần nào cho các bạn.


Hy vọng với bài viết về Học các hàm xử lý ngày tháng trong PHP đã giải đáp giúp bạn phần nào về kiến thức lập trình PHP. Như tôi đã nói, ngôn ngữ lập trình không quan trọng bằng tư duy giải thuật, tư duy logic để giải quyết vấn đề.

Với những năm trước đây, lập trình viên là một cái nghề khó và kén chọn người học, đồng nghĩa với việc thu nhập hàng tháng của các lập trình viên luôn cao. Còn những năm gần đây, thì lập trình là môn học phổ thông, và ai cũng nên học một ngôn ngữ lập trình nào đó.

Nếu bạn còn bất kỳ câu hỏi nào trong việc học lập trình online, hãy gửi yêu cầu cho tôi qua email hoidapcode.com@gmail.com hoặc để lại comment bên dưới, tôi sẽ giải đáp trong vòng 24 giờ!

Blog hoidapcode.com là blog được tổng hợp tự động các bài học, thông tin về lập trình trên mạng internet. Nếu bạn có ý kiến hoặc đóng góp về bài viết này, hãy liên hệ với tôi!