Menu
CoddyTech

Kiến thức cơ bản về LocalDate

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 54 trên 59.

LocalDate trong Java biểu thị một ngày không có giờ hoặc múi giờ. Kiểu này dùng để làm việc với các ngày như sinh nhật, ngày lễ hoặc lịch trình.

Tạo ngày hôm nay:

LocalDate today = LocalDate.now();

Tạo một ngày cụ thể:

LocalDate date = LocalDate.of(2024, 3, 15);

Sau khi chạy đoạn code trên, date chứa: 2024-03-15

Lấy các phần khác nhau của một ngày:

LocalDate date = LocalDate.of(2024, 3, 15);
int year = date.getYear();      // 2024
int month = date.getMonthValue(); // 3
int day = date.getDayOfMonth();   // 15
String dayOfWeek = date.getDayOfWeek().toString();  // "FRIDAY"

Phân tích cú pháp một ngày từ String:

LocalDate date = LocalDate.parse("2024-03-15");  // Định dạng: "yyyy-MM-dd"

Quan trọng: Nếu định dạng chuỗi không hợp lệ, parse() sẽ ném ra ngoại lệ DateTimeParseException. Hãy dùng try-catch để xử lý:

try {
    LocalDate date = LocalDate.parse("invalid-date");
} catch (DateTimeParseException e) {
    System.out.println("Invalid date format");
}

Cộng hoặc trừ số ngày:

LocalDate date = LocalDate.of(2024, 3, 15);
LocalDate future = date.plusDays(10);    // 2024-03-25
LocalDate past = date.minusDays(5);      // 2024-03-10

Sau khi chạy đoạn code trên:

  • future: 2024-03-25
  • past: 2024-03-10
challenge icon

Thử thách

Dễ

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

  1. Một chuỗi (String) (dateStr) theo định dạng "yyyy-MM-dd"
  2. Một số nguyên (days) để cộng hoặc trừ
  3. Một chuỗi (operation) có giá trị "add" hoặc "subtract"

Phương thức cần:

  1. Phân tích chuỗi ngày đầu vào
  2. Cộng hoặc trừ số ngày đã 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 ngày không hợp lệ: trả về "Invalid date format"
  • Nếu thao tác không hợp lệ: trả về "Invalid operation"
  • Nếu thành công: trả về "Original: [date], New: [new_date], Day of week: [day_name]", trong đó [day_name] là thứ trong tuần của ngày mới, viết in hoa (ví dụ: WEDNESDAY)

Tự làm thử

import java.util.Scanner;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.time.format.DateTimeParseException;

public class Main {
    public static String processDate(String dateStr, int days, String operation) {
        // Viết code của bạn ở đây
    }
    
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String dateStr = scanner.nextLine();
        int days = Integer.parseInt(scanner.nextLine());
        String operation = scanner.nextLine();
        
        System.out.println(processDate(dateStr, days, 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