Menu
CoddyTech

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

Sau 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:30

Nế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().

challenge icon

Thử thách

Dễ

Tạo một phương thức có tên processDateTime nhận bốn đối số:

  1. Một chuỗi (dateTimeStr) theo định dạng "yyyy-MM-dd HH:mm"
  2. Một số nguyên (amount) để cộng hoặc trừ
  3. Một chuỗi (unit) có giá trị là "hours", "days" hoặc "months"
  4. Một chuỗi (operation) có giá trị là "add" hoặc "subtract"

Phương thức cần:

  1. Phân tích chuỗi ngày giờ đầu vào
  2. Thực hiện thao tác được chỉ định
  3. 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:mm và [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));
    }
}
quiz iconTự kiểm tra

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

Tự luyện tập: Trình biên dịch Java online