Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Java

Cách parse Date từ String định dạng dd/MM/yyyy sang dd/MM/yyyy trong Java

Dùng java.text.SimpleDateFormat để parse String → Date, rồi format Date → String theo format mới.

Quy trình

  1. Parse String input thành java.util.Date dùng SimpleDateFormat.parse().
  2. Tạo SimpleDateFormat mới với pattern đầu ra mong muốn.
  3. Dùng format(date) để ra String kết quả.

Ví dụ hoàn chỉnh

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;

public class DateFormatConvert {
    public static Date parseDate(String input, String pattern) throws ParseException {
        return new SimpleDateFormat(pattern).parse(input);
    }
    
    public static void main(String args[]) throws ParseException {
        Scanner sc = new Scanner(System.in);
        System.out.print("Nhập tên: ");
        String name = sc.next();
        
        System.out.print("Nhập ngày sinh (dd-MM-yyyy): ");
        String dob = sc.next();
        
        // Parse input
        Date date = parseDate(dob, "dd-MM-yyyy");
        System.out.println("Date object: " + date);
        
        // Chọn format đầu ra
        System.out.println("Chọn format: a) MM-dd-yyyy  b) dd-MM-yyyy  c) yyyy-MM-dd");
        char ch = sc.next().charAt(0);
        
        String outPattern = switch (ch) {
            case 'a' -> "MM-dd-yyyy";
            case 'b' -> "dd-MM-yyyy";
            case 'c' -> "yyyy-MM-dd";
            default -> "dd-MM-yyyy";
        };
        
        String formatted = new SimpleDateFormat(outPattern).format(date);
        System.out.println("Kết quả (" + outPattern + "): " + formatted);
    }
}

Kết quả

Nhập tên: Krishna
Nhập ngày sinh (dd-MM-yyyy): 26-09-1989
Date object: Tue Sep 26 00:00:00 IST 1989
Chọn format: a) MM-dd-yyyy  b) dd-MM-yyyy  c) yyyy-MM-dd
a
Kết quả (MM-dd-yyyy): 09-26-1989

Java 8+: Date Time API (Khuyên dùng)

SimpleDateFormat không thread-safe, lỗi thời. Dùng java.time:

import java.time.LocalDate;
import java.time.format.DateTimeFormatter;

public class ModernDateFormat {
    public static void main(String[] args) {
        String input = "26-09-1989";
        DateTimeFormatter inFmt = DateTimeFormatter.ofPattern("dd-MM-yyyy");
        LocalDate date = LocalDate.parse(input, inFmt);
        
        DateTimeFormatter outFmt = DateTimeFormatter.ofPattern("MM-dd-yyyy");
        String output = date.format(outFmt);
        System.out.println(output); // 09-26-1989
    }
}

Ưu điểm java.time: Immutable, thread-safe, API rõ ràng, hỗ trợ timezone, duration, period...