Ôn tập: Tính toán ngày
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 51 trên 68.
Thử thách
DễBạn sẽ nhận ba đầu vào: ngày bắt đầu, ngày kết thúc và chuỗi định dạng. Hai đầu vào đầu tiên là chuỗi ngày theo định dạng Y-m-d (ví dụ: 2024-03-15), còn đầu vào thứ ba là biểu thức điều chỉnh như +5 days, -2 weeks hoặc +1 month.
Đọc cả ba đầu vào, tạo hai đối tượng DateTime từ ngày bắt đầu và ngày kết thúc, áp dụng biểu thức điều chỉnh cho ngày bắt đầu, rồi xác định ngày nào đến sau: ngày bắt đầu đã điều chỉnh hay ngày kết thúc ban đầu. In ra ngày đến sau theo định dạng Y-m-d.
Định dạng đầu vào:
- Dòng đầu tiên: Chuỗi ngày bắt đầu theo định dạng
Y-m-d(ví dụ:2024-03-15) - Dòng thứ hai: Chuỗi ngày kết thúc theo định dạng
Y-m-d(ví dụ:2024-04-10) - Dòng thứ ba: Chuỗi điều chỉnh (ví dụ:
+5 dayshoặc-2 weeks)
Đầu ra mong đợi: Ngày đến sau giữa ngày bắt đầu đã điều chỉnh và ngày kết thúc ban đầu, được định dạng theo Y-m-d
Tự làm thử
<?php
// Đọc ba đầu vào
$startDate = trim(fgets(STDIN));
$endDate = trim(fgets(STDIN));
$modification = trim(fgets(STDIN));
// TODO: Viết code bên dưới
// Tạo các đối tượng DateTime từ ngày bắt đầu và ngày kết thúc
// Áp dụng thay đổi cho ngày bắt đầu
// So sánh ngày bắt đầu sau khi thay đổi với ngày kết thúc
// Xác định ngày nào muộn hơn
// Xuất ngày muộn hơn theo định dạng Y-m-d
echo $laterDate;
?>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