Cách dùng LocalDateTime
Thuộc phần Logic và luồng chương trình trong hành trình Java của Coddy. Bài học 56 trên 59.
LocalDateTime trong Java kết hợp cả ngày và giờ. Kiểu này hữu ích khi bạn cần làm việc với cả hai thành phần, chẳng hạn như lịch sự kiện hoặc dấu thời gian.
Tạo ngày và giờ hiện tại
LocalDateTime now = LocalDateTime.now();Tạo ngày và giờ cụ thể:
LocalDateTime dateTime = LocalDateTime.of(2024, 3, 15, 14, 30);
// 2024-03-15 14:30Sau khi chạy đoạn code trên, dateTime chứa:
2024-03-15T14:30
Định dạng ngày và giờ:
LocalDateTime dateTime = LocalDateTime.of(2024, 3, 15, 14, 30);
String formatted = dateTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm"));Phân tích ngày và giờ từ một String theo cùng một mẫu:
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm");
LocalDateTime parsed = LocalDateTime.parse("2024-03-15 14:30", formatter); // 2024-03-15T14:30Nếu không có bộ định dạng (formatter), LocalDateTime.parse() chỉ chấp nhận dạng ISO 2024-03-15T14:30. Chuỗi không khớp với mẫu sẽ phát sinh DateTimeParseException, vì vậy hãy bọc lời gọi trong try-catch như bạn đã làm với LocalDate.parse().
Thử thách
DễTạo một phương thức có tên processDateTime nhận bốn đối số:
- Một chuỗi (
dateTimeStr) theo định dạng "yyyy-MM-dd HH:mm" - Một số nguyên (
amount) để cộng hoặc trừ - Một chuỗi (
unit) có giá trị là "hours", "days" hoặc "months" - Một chuỗi (
operation) có giá trị là "add" hoặc "subtract"
Phương thức cần:
- Phân tích chuỗi ngày giờ đầu vào
- Thực hiện thao tác được chỉ định
- Trả về thông tin đã định dạng về kết quả
Các thông báo trả về:
- Nếu định dạng không hợp lệ: trả về "Invalid date time format"
- Nếu đơn vị không hợp lệ: trả về "Invalid unit"
- Nếu thao tác không hợp lệ: trả về "Invalid operation"
- Nếu thành công: trả về "Original: [datetime], New: [new_datetime], Day: [day_name]", trong đó cả hai ngày giờ đều theo định dạng
yyyy-MM-dd HH:mmvà [day_name] là tên thứ trong tuần của ngày giờ mới, viết hoa (ví dụ:FRIDAY)
Tự làm thử
import java.util.Scanner;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.time.format.DateTimeParseException;
public class Main {
public static String processDateTime(String dateTimeStr, int amount, String unit, String operation) {
// Viết code của bạn tại đây
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String dateTimeStr = scanner.nextLine();
int amount = Integer.parseInt(scanner.nextLine());
String unit = scanner.nextLine();
String operation = scanner.nextLine();
System.out.println(processDateTime(dateTimeStr, amount, unit, operation));
}
}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
1Mảng đa chiều
Kiến thức cơ bản về mảng 2DTruy cập phần tử trong mảng 2DVòng lặp lồng nhau với mảng 2DÔn tập về mảng 2DPhép cộng và phép trừ ma trậnMảng không đềuMảng 3D trở lênCác mẫu thường gặp với mảng 2DÔn tập về mảng4HashSet phần 1
HashSet là gì?Thêm một phần tửXóa một phần tửKiểm tra phần tử có tồn tại khôngRỗng và kích thướcXóa và sao chépÔn tập: HashSet10Ngày và giờ
Kiến thức cơ bản về LocalDateCác thao tác với LocalTimeCách dùng LocalDateTimePeriod và DurationĐịnh dạng ngày thángXử lý múi giờ2HashMap phần 1
HashMap là gì?Khai báo HashMapTruy cập giá trịKiểm tra khóa có tồn tạiChỉnh sửa từ điểnÔn tập: HashMapTự luyện tập: Trình biên dịch Java online