Giới thiệu về đối tượng DateTime
Thuộc phần Logic và luồng chương trình trong hành trình PHP của Coddy. Bài học 48 trên 68.
Mặc dù các hàm theo kiểu thủ tục như date(), time() và strtotime() hoạt động tốt với các thao tác ngày tháng cơ bản, PHP còn cung cấp một cách tiếp cận mạnh mẽ và linh hoạt hơn thông qua lớp DateTime. Phương pháp hướng đối tượng này giúp tổ chức tốt hơn, cú pháp rõ ràng hơn và cung cấp nhiều chức năng nâng cao hơn để làm việc với ngày tháng và thời gian.
Lớp DateTime biểu diễn một thời điểm cụ thể dưới dạng đối tượng, sau đó bạn có thể thao tác và định dạng bằng nhiều phương thức khác nhau. Khác với các hàm thủ tục xử lý dấu thời gian và chuỗi định dạng riêng biệt, đối tượng DateTime gói gọn cả dữ liệu ngày giờ lẫn các thao tác bạn có thể thực hiện với dữ liệu đó.
<?php
$now = new DateTime();
echo $now->format('Y-m-d H:i:s'); // In ra kết quả tương tự: 2024-03-15 14:30:25
?>Khi tạo một đối tượng DateTime mới mà không truyền tham số nào, đối tượng sẽ tự động nhận ngày giờ hiện tại.
Cách tiếp cận hướng đối tượng giúp code của bạn dễ đọc và dễ bảo trì hơn, nhất là khi bạn cần thực hiện nhiều thao tác trên cùng một ngày. Cách này đặc biệt hữu ích khi bạn làm việc với các phép tính ngày tháng phức tạp hơn và các yêu cầu định dạng.
Thử thách
DễBạn sẽ nhận một đầu vào: chuỗi ngày tháng theo định dạng Y-m-d H:i:s (ví dụ: 2024-03-15 14:30:25).
Đọc chuỗi ngày tháng đầu vào, tạo một đối tượng DateTime bằng cách dùng chuỗi ngày tháng này làm tham số, rồi in trực tiếp đối tượng DateTime.
Khi bạn tạo một đối tượng DateTime với tham số là chuỗi ngày tháng, đối tượng sẽ biểu thị thời điểm cụ thể đó thay vì ngày và giờ hiện tại. Chỉ cần echo đối tượng để hiển thị.
Định dạng đầu vào: Một dòng chứa chuỗi ngày tháng theo định dạng Y-m-d H:i:s (ví dụ: 2024-03-15 14:30:25)
Đầu ra dự kiến: Ngày và giờ được định dạng theo Y-m-d H:i:s
Tự làm thử
<?php
// Đọc chuỗi ngày tháng đầu vào
$dateString = trim(fgets(STDIN));
// TODO: Tạo đối tượng DateTime từ chuỗi ngày tháng rồi in ra
?>Bài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.
Tất cả bài học trong Logic và luồng chương trình
1Hàm nâng cao
Hàm ẩn danhClosure và 'use'Hàm mũi tênHàm callbackDùng 'call_user_func'Hàm biếnTruyền tham chiếuHàm đệ quyÔn tập: tổng hợp về hàm4Mảng đa chiều
Tạo mảng 2 chiềuTruy cập phần tử trong mảng 2 chiềuChỉnh sửa phần tử trong mảng 2 chiềuLặp qua các vòng lặp lồng nhauMảng kết hợp 2 chiềuÔn tập: bài tập lưới đơn giản7Làm việc với ngày và giờ
Hàm 'date()'Dấu thời gian Unix với 'time()'Giới thiệu về đối tượng DateTimeĐịnh dạng đối tượng DateTimeChỉnh sửa đối tượng DateTimeÔn tập: Tính toán ngày2Thao tác nâng cao với mảng
Thêm phần tử bằng 'array_push'Xóa phần tử bằng 'array_pop'Thêm phần tử vào đầu mảng bằng 'array_unshift'Xóa phần tử đầu mảng bằng 'array_shift'Gộp các mảng được đánh chỉ sốGộp các mảng kết hợpTrích xuất phần tử bằng 'array_slice'Kiểm tra giá trị bằng 'in_array'Tìm khóa bằng 'array_search'Ôn tập: bài tập về danh sách phát3Sắp xếp mảng
Sắp xếp mảng có chỉ số tăng dầnSắp xếp mảng có chỉ số giảm dầnSắp xếp mảng kết hợp theo giá trịSắp xếp mảng kết hợp theo khóaSắp xếp theo thứ tự tự nhiênSắp xếp tùy chỉnh bằng 'usort'Ôn tập: Sắp xếp bảng xếp hạngTự luyện tập: Trình biên dịch PHP online