Trang chủ » Blog » Học lập trình PHP căn bản phần 13

Học lập trình PHP căn bản phần 13

bởi CodeGym | 27/12/2023 11:27 | Blog

Bài 29: Xử lý ngày tháng trong PHP

Xử lý ngày tháng là việc 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 phải in ra ngày tháng đăng bài viết hiển thị theo kiểu ngày / tháng / năm.Thì bắt buộc bạn phải biết cách sử dụng tất 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 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é.

Nội dung chính

  • 1. Thiết lập time_zone tại Việt Nam.
  • 2. Cách định dạng ngày tháng với hàm date() trong PHP.
  • 3. Xử lý ngày tháng nâng cao trong PHP.
    • Truyền chuỗi vào định dạng format.
    • Chuyển đổi thời gian sang kiểu INT.
    • Định dạng ngày tháng trong MySQL.
    • Xử lý cộng trừ ngày tháng với hàm mktime().

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

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

1: 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ó. Vì vậy để chắc chắn thì bạn nên để lệnh này ở đầu file của chương trình nhé.

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

1:date_default_timezone_set('Asia/Ho_Chi_Minh');.

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

ảnh minh họa

Hãy 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. Cách định dạng ngày tháng với hàm date() trong PHP

Hàm date được 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:

1: date ($format, $timestamp = 'time()').

Trong đó:

  • $format là định dạng mà hàm này sẽ được trả về.
  • $timestamp là thời gian truyền vào (kiểu INT) và 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 đủ.

Dưới đâ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 time hiện tại theo định dạng ngày/tháng/năm – giờ:phút:giây.

Chiếu theo mà 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à:

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

Chạy lên 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 mà bạn muốn truyền một chuỗi vào định dạng format. Thì tôi khuyên các bạn nên đặt dấu / đằng trước mỗi ký tự. Việc 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  sẽ là số phút nên kết quả sẽ không như mong đợi.

1: 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:

1: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

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

1: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

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

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

Nếu mà 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()

Các bạn ạ 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:

Đó là 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 nên sử dụng hàm date() để chuyển đổi ra định dạng mong muốn.

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

1:$dateint = mktime(0, 0, 0, 11, (20 + 12), 2016);.

2:echo date('d/m/Y', $dateint); // 02/12/2016.

Bạn hãy để ý 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.

ảnh minh họa

Bài 30: Tìm hiểu hàm header trong PHP

Trong bài này chúng ta tìm hiểu về hàm header. Hàm này là một hàm được dùng khá nhiều trong lập trình web, ví dụ như dùng để chuyển hướng trang. Được dùng để khai báo định dạng file trả về từ Server, …

Ở trong tiếng anh thì có định nghĩa như sau: header() is used to send a raw HTTP header. Khái niệm này bạn hãy tự dịch ra chứ mình cũng không biết dịch sao cho sát nghĩa nữa :3

Cú pháp của hàm header như sau:

1: header ($string, $replace = true, $http_response_code = null) {}.

Trong đó:

  • $string: Chuỗi khai báo cho kết quả trả về từ Server, chuỗi này đóng vai trò quan trọng nhất vì nội dung của nó sẽ quyết định header sẽ làm gì.
  • $replace: Tham số này được mặc định là true, nghĩa là định dạng của chuỗi $string sẽ được replace chứ không phải khai báo mới (trường hợp khai báo nhiều header).
  • $http_response_code: Mã code trả về từ Server.

Lưu ý: Cũng như Session trong PHP. Phải chắc chắn ở phía trên đoạn code sử dụng header không được xuất ra bất kì một ký tự nào. Vậy nên thông thường chúng ta đặt header ở phía trên cùng của file. Nơi mà chưa có những đoạn mã HTML.

Và bây giờ chúng ta tìm hiểu một số công dụng của hàm header nhé.

Nội dung chính

1. Header điều hướng trang

Các bạn có thể sử dụng thẻ header để điều hướng, chuyển hướng trang với cú pháp như sau:

1: header('Location: http://www.domain.net/');.

Ví dụ: Chuyển hướng tới trang freetuts.net.

1:header('Location: http://www.freetuts.net/');.

Khi mà chuyển hướng trang với hàm header bạn nên khai báo thêm response_code sẽ tốt rất nhiều cho SEO.

1: header('Location: http://www.domain.net/', true, 301);.

Còn trường hợp bạn muốn chuyển hướng page not found thì hãy sử dụng mã code 404.

1: header('Location: http://www.domain.net/', true, 404);.

2. Khắc phục lỗi font với hàm header

Các bạn có thể sử dụng hàm header để khắc phục tình trạng lỗi font. Lúc trả kết quả về không có định dạng thẻ meta UTF- 8 bằng cách đặt đoạn code sau ở đầu file.

1: header('Content-Type: text/html; charset=utf-8');.

3. Khai báo định dạng file

Muốn khai báo định dạng file thì ta sử dụng cú pháp sau:

1: header("Content-type: text/javascript");.

Các bạn có thể thay đổi text/javascript thành text/css để khai báo đây là file CSS.

Nếu bạn muốn khi người dùng vào file đó thì sẽ download thay vì hiển thị. thì hãy sử dụng thẻ header sau:

1: header("Content-type: application/force-download");.
2: header("Content-Disposition: attachment; filename=\"download.js\"");.

Bài 31: PHP Filter – Hàm filter_var trong PHP

Nếu trước đây bạn sử dụng Regular Expression để kiểm tra định dạng dữ liệu. nó rất phức tạp phải không nào? Nhưng bây giờ thì khác vì trong PHP có một module hỗ trợ việc này khá tốt đó là PHP Filters

PHP Filter là gì?

PHP Filters là một extension được tích hợp sẵn vào thư viện của PHP, đây là một thư viện dùng để kiểm tra tính hợp lệ của dữ liệu (validate data), lọc và xóa đi những ký tự trùng khớp (Sanitizing data).

Nếu dịch theo đúng cái tên của nó là bộ lọc trong PHP. Như vậy tác dụng của nó cũng chính là ý nghĩa của nó. Thông thường chúng ta hay sử dụng PHP Filters để kiểm tra định dạng dữ liệu vì nó tương đối đơn giản. Và trong series này chúng ta sẽ tìm hiểu tổng cộng các loại filter sau:

  • Validate filters
  • Sanitize filters
  • Flag filters
  • Callback filter

Về chi tiết hàm này bạn nên tham khảo tại trang chủ PHP.NET nhé.

Bài 32: Header Request và Header Response

Khi thao tác với các website thì chúng ta có hai hành động. Thứ nhất là gửi yêu cầu lên server và ta gọi là request. Hành động thứ hai là server gửi trả kết quả về cho client và ta gọi là response. Mỗi hành động như vậy sẽ kèm các thông số kèm theo và các thông số đó ta gọi là Header Parameters. Trình duyệt và server sẽ dựa vào các thông số header này để trả dữ liệu. và hiển thị dữ liệu cho phù hợp, vì vậy nó đóng vai trò khá là quan trọng đấy.

Note: Để xem các tham số đó bằng mắt thường thì bạn hãy sử dụng Firebug của Chrome nhé. Nó nằm ở tab Network.

ảnh minh họa

Nội dung chính

1. Header Request Parameters

Header request parameters là các thông số kèm theo khi gửi yêu cầu lên server.

ảnh minh họa

Bạn dễ dàng nhập thấy các thông số thường gặp như HostUser-AgentCookie, … Đấy là các tham số mặc định tự sinh ra bởi trình duyệt. và bạn không thể thay đổi giá trị cho chúng. Trừ khi các bạn sử dụng CURL để tạo một request giả.

Trước đây mình thắc mắc tại sao Cookie được lưu ở trình duyệt client mà server có thể đọc được.

Kể từ ngày tìm hiểu về các tham số Header này mới hiểu là:
khi gửi request trình duyệt đã đính kèm thêm tham số này ở header.

2. Header Response Parameters

Header response parameters là các thông số kèm theo khi server gửi kết quả về cho client.

ảnh minh họa

Tất cả mọi thông số thường thấy như Server, Last-ModiffiedContent-TypeContent-LengthContent-Encoding … Các thông số này ta có thể sử dụng htaccess hoặc hàm header trong PHP để can thiệp bổ sung hoặc thay đổi giá trị.

Ví dụ: Thay đổi định dạng Content-Type trả về là một hình ảnh PNG chứ không phải là text/plain, bạn sẽ đặt đoạn code sau ở đầu file PHP.

1: header('Content-Type: image/png');.

Mỗi tham số mặc định sẽ có một nhiệm vụ cụ thể nên nếu thấy cần thiết thì bạn mới thay đổi giá trị cho nó, còn bình thường thì không cần thiết. Ví dụ như ở hình ảnh Header Response có tham số Content-Encoding = gzip là do mình đã sử dụng file .htaccess để nén trước khi gửi về client.

Ok bài này mang tính chất giới thiệu thôi, bạn chỉ cần hiểu trong các request sẽ có các tham số header kèm theo là được, sau này khi học nâng cao lên các Framework như NodeJS, CURL hoặc viết các web service thì bạn sẽ đụng tới nó khá nhiều.

Download - Giáo trình thuật toán

15 + 10 =

Tags:

0 Lời bình

Gửi Lời bình

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

BÀI VIẾT LIÊN QUAN

BẠN MUỐN HỌC LẬP TRÌNH?

GỌI NGAY

098 953 44 58

Đăng ký tư vấn lộ trình học lập trình

Đăng ký tư vấn, định hướng lộ trình học và giải đáp các thắc mắc về ngành nghề – Miễn phí – Online.

12 + 7 =

TƯ VẤN VỀ LỘ TRÌNH HỌC NGHỀ LẬP TRÌNH TẠI CODEGYM
TƯ VẤN VỀ LỘ TRÌNH HỌC NGHỀ LẬP TRÌNH TẠI CODEGYM