Sử dụng Ngày giờ PHP

Nhiệm vụ phổ biến là làm việc với ngày và giờ với tư cách là nhà phát triển web. Nếu bạn vẫn đang sử dụng các hàm như strtotime và date để làm việc với ngày và giờ, thì bạn đang bỏ lỡ

PHP cung cấp một lớp DateTime chuyên dụng để xử lý ngày và giờ. Hầu hết mọi người đã bỏ qua nó, mặc dù nó đã có từ PHP 5. 2

Một vài lý do tại sao bạn nên sử dụng DateTime thay vì strtotime và date

  • DateTime có thể xử lý nhiều định dạng chuỗi ngày hơn so với strtotime
  • Làm việc với đối tượng dễ dàng hơn các hàm tùy ý. e. g. So sánh hai ngày là trực tiếp với DateTime. Trong khi với strtotime, chúng ta cần chuyển đổi ngày thành dấu thời gian và so sánh chúng
  • Giao diện hướng đối tượng của DateTime gói gọn rất nhiều logic back-end và cung cấp giao diện rõ ràng để chúng tôi sử dụng

#Khởi tạo

Khởi tạo một đối tượng DateTime không khác gì khởi tạo bất kỳ đối tượng nào khác trong PHP. Chúng tôi khởi tạo một đối tượng DateTime thông qua hàm tạo của nó

Khi không có tham số nào được cung cấp, một đối tượng DateTime có dấu thời gian hiện tại và múi giờ mặc định sẽ được tạo. Múi giờ mặc định thường được cấu hình trong php. tập tin ini

Ví dụ: để tạo một đối tượng DateTime "hiện tại"

$currentDateTime = new DateTime();

Theo tùy chọn, chúng tôi có thể cung cấp một chuỗi, biểu thị ngày và giờ hợp lệ, làm tham số đầu tiên của hàm tạo DateTime. Múi giờ mặc định sẽ vẫn được sử dụng vì nó không được chỉ định

Một vài ví dụ tạo đối tượng DateTime với chuỗi thời gian hợp lệ

$yesterday = new DateTime('yesterday');
 
$twoDaysLater = new DateTime('+ 2 days');
 
$oneWeekEarly = new DateTime('- 1 week');

Tham số thứ hai của hàm tạo DateTime cho phép chúng ta chỉ định múi giờ. Tham số này chỉ chấp nhận một đối tượng DateTimeZone

Ví dụ: để tạo một đối tượng DateTime với múi giờ Singapore

$yesterdayInSingapore = new DateTime('yesterday', new DateTimeZone('Singapore'));

Tất nhiên, chúng ta cũng có thể tạo một đối tượng DateTime với chuỗi ngày truyền thống

$dateTime = new DateTime('2015-01-01 12:30:12');

#Định dạng

Chúng tôi sẽ luôn muốn một định dạng cụ thể tùy thuộc vào hệ thống chúng tôi đang xây dựng

Định dạng một đối tượng DateTime để có được một biểu diễn chuỗi tùy chỉnh rất đơn giản. Nó được thực hiện thông qua phương thức format() của DateTime

Ngày giờ. format() chấp nhận một tham số chuỗi đơn. Chuỗi này phải chứa các tùy chọn được liệt kê tại trang chính thức của PHP

Ví dụ: để có định dạng yyyy-dd-mm do DateTime xuất ra, chúng ta có thể thực hiện

$now = new DateTime();
 
$ymdNow = $now->format('Y-m-d');

Chúng tôi có thể tạo bất kỳ định dạng mong muốn nào, vì tham số định dạng cung cấp tất cả các tùy chọn có thể

Một vài ví dụ khác

print_r($now->format('jS F Y'));
 
print_r($now->format('ga jS M Y'));
 
print_r($now->format('Y/m/d s:i:H'));
 
// Output:
6th January 2016
1am 6th Jan 2016
2016/01/06 11:39:01

#so sánh

Khi làm việc với chuỗi ngày, chúng ta cần chuyển đổi chúng thành dấu thời gian bằng cách sử dụng strtotime để so sánh giá trị của chúng

Các đối tượng DateTime hoạt động với các toán tử so sánh ngoài hộp. Chúng ta có thể so sánh trực tiếp hai đối tượng DateTime giống như hai giá trị số

Một vài ví dụ so sánh hai đối tượng DateTime

$today = new DateTime('today');
$yesterday = new DateTime('yesterday');
 
var_dump($today > $yesterday);
var_dump($today < $yesterday);
var_dump($today == $yesterday);
 
// Output
bool(true)
bool(false)
bool(false)

Đôi khi, giá trị Boolean so sánh hai đối tượng ngày là không đủ. Chúng tôi có thể muốn biết sự khác biệt chính xác giữa hai ngày

Ngày giờ. diff là một hàm để nhận sự khác biệt giữa hai đối tượng DateTime. Hàm này trả về một đối tượng DateInterval mà chúng ta có thể sử dụng để truy xuất bất kỳ định dạng khoảng mong muốn nào thông qua hàm DateInterval của nó. định dạng

Ví dụ: để nhận chênh lệch ngày giữa $hôm nay và $hôm qua, chúng ta có thể làm

$interval = $today->diff($yesterday);
echo $interval->format('%d day ago')
 
// Output
1 day ago

Có một số thuộc tính khoảng thời gian trong lớp DateInterval, bạn có thể kiểm tra chúng tại trang web chính thức của PHP

#Thao tác

Mặc dù trong thực tế, chúng ta không bao giờ có thể thao túng thời gian, nhưng với DateTime, chúng ta thực sự có thể làm được điều đó. Điều này có nghĩa là các đối tượng DateTime có thể thay đổi

#Phép cộng

Việc thêm vào DateTime hiện có được thực hiện thông qua hàm DateTime. cộng. Ngày giờ. add chấp nhận một tham số đối tượng DateInterval

Hãy chứng minh cách hoạt động của phép cộng trong một ví dụ đơn giản

________số 8

Hầu hết các mã ở trên là dễ hiểu. Phần khó khăn duy nhất có thể là tạo một đối tượng DateInterval. Hàm tạo của DateInterval chấp nhận một chuỗi chứa thông số khoảng thời gian hợp lệ

Phần chặn giải thích cho đặc tả khoảng từ trang web chính thức của PHP

Định dạng bắt đầu bằng chữ P, cho "dấu chấm. " Mỗi khoảng thời gian được biểu thị bằng một giá trị số nguyên theo sau là ký hiệu chỉ định khoảng thời gian. Nếu khoảng thời gian chứa các yếu tố thời gian, thì phần đó của thông số kỹ thuật được đặt trước chữ T

Trong mã của chúng tôi ở trên, chúng tôi đã sử dụng 'P2D', tiêu chuẩn trong hai ngày, để tạo đối tượng DateInterval

#phép trừ

Tương tự với DateTime. cộng, trừ được thực hiện thông qua hàm DateTime. phụ. Ngày giờ. chức năng phụ chấp nhận một đối tượng DateInterval giống như DateTime. thêm chức năng

Để trừ hai ngày từ $today, chúng ta có thể làm

$today = new DateTime('today');
 
echo $today->format('Y-m-d') . PHP_EOL;
 
$today->modify('-2 days');
 
echo $today->format('Y-m-d') . PHP_EOL;
 
// Output
2016-01-06
2016-01-04

Cũng có thể sửa đổi đối tượng DateTime với DateTime. sửa đổi chức năng

So sánh với DateTime. thêm chức năng và DateTime. chức năng phụ, DateTime. chức năng sửa đổi có một loại tham số khác để thực hiện công việc. Nó chấp nhận một chuỗi ngày/giờ. Có rất nhiều hỗ trợ cho chuỗi ngày/giờ, bạn có thể xem chi tiết tại trang web chính thức của PHP

Để trừ hai ngày từ $today với DateTime. sửa đổi chức năng, chúng ta có thể làm

$today = new DateTime('today');
 
echo $today->format('Y-m-d') . PHP_EOL;
 
$today->modify('-2 days');
 
echo $today->format('Y-m-d') . PHP_EOL;
 
// Output
2016-01-06
2016-01-04

#Chấm dứt

Cho đến nay, bạn đã học cách tạo, định dạng, so sánh và thậm chí thao tác đối tượng DateTime. Với những gì bạn đã học được, bạn sẽ có thể tự tin thay thế các hàm như strtotime và date bằng đối tượng DateTime trong các dự án tương lai của mình

Không sớm thì muộn, bạn sẽ sử dụng các đối tượng DateTime để thực hiện lặp đi lặp lại cùng một nhiệm vụ. Đó là trường hợp của hầu hết các nhà phát triển

Các nhiệm vụ như tính tuổi của ai đó dựa trên ngày sinh nhật của anh ấy hoặc kiểm tra xem ngày mai có phải là ngày thường hay không là khá phổ biến. Các nhà phát triển PHP đã quyết định hợp nhất các tác vụ khác nhau liên quan đến DateTime thành một số gói chung. Do đó, một số gói liên quan đến DateTime đã được phát triển qua nhiều năm

Một số cái nổi bật được cộng đồng đề xuất. Chúng tôi sẽ khuyến khích bạn kiểm tra hai trong số chúng như hình dưới đây. Họ đặc biệt tốt. Bởi vì chúng không chỉ cung cấp nhiều chức năng trợ giúp để xử lý DateTime mà chúng còn được ghi chép đầy đủ

Công dụng của date() trong PHP là gì?

Hàm date() định dạng ngày giờ địa phương và trả về chuỗi ngày đã định dạng .

Định dạng của DateTime trong PHP là gì?

Thông số ¶

DateTime mới trong PHP là gì?

Ngày giờ. Hàm format() là một hàm có sẵn trong PHP, được dùng để trả về ngày được định dạng mới theo định dạng đã chỉ định .

Làm cách nào tôi có thể đánh dấu thời gian trong PHP?

Cú pháp ngày PHP & ví dụ .
“Y-m-d” cho định dạng ngày PHP YYYY-MM-DD
“Y” để hiển thị năm hiện tại
“[dấu thời gian]” là tùy chọn. Nếu không có dấu thời gian nào được cung cấp, PHP sẽ lấy ngày giờ PHP hiện tại trên máy chủ