2012-11-14 24 views
5

Tôi có một String trong Java mà là một ngày nhưng được định dạng như:Lấy một chuỗi đó là một ngày và định dạng nó trong Java

tôi cần phải định dạng lại nó để trông giống như 02/12/2012 làm thế nào điều này có thể được thực hiện.

Với đoạn mã sau tôi tiếp tục nhận lại [email protected]

Dưới đây là mã của tôi ..

public static void main(String[] args) { 

    // Make a String that has a date in it, with MEDIUM date format 
    // and SHORT time format. 
    String dateString = "02152012"; 

    SimpleDateFormat input = new SimpleDateFormat("ddMMyyyy"); 
    SimpleDateFormat output = new SimpleDateFormat("dd/MM/yyyy"); 
    try { 
     output.format(input.parse(dateString)); 
    } catch (Exception e) { 

    } 
    System.out.println(output.toString()); 
} 
+2

Không có số tháng 15 – Alex

+1

Đồng ý với Alex, và thậm chí nếu đó là có nghĩa là 02122012, bạn đã thử những gì? –

+3

@BlueBullet: Bạn đã chỉnh sửa câu hỏi gốc * giả sử * nó chỉ là một lỗi đánh máy. Tôi thà nghe điều đó từ OP. –

Trả lời

9

Sử dụng SimpleDateFormat.

SimpleDateFormat input = new SimpleDateFormat("ddMMyyyy"); 
SimpleDateFormat output = new SimpleDateFormat("dd/MM/yyyy"); 
System.out.println(output.format(input.parse("02122012"))); // 02/12/2012 

Theo đề nghị của Jon Skeet, bạn cũng có thể thiết lập các TimeZoneLocale trên SimpleDateFormat

SimpleDateFormat englishUtcDateFormat(String format) { 
    SimpleDateFormat sdf = new SimpleDateFormat(format, Locale.ENGLISH); 
    sdf.setTimeZone(TimeZone.getTimeZone("UTC")); 
    return sdf; 
} 

SimpleDateFormat input = englishUtcDateFormat("ddMMyyyy"); 
SimpleDateFormat output = englishUtcDateFormat("dd/MM/yyyy"); 
System.out.println(output.format(input.parse("02122012"))); // 02/12/2012 
+0

giải pháp tuyệt vời +1 – Juvanis

+1

Tôi khuyên bạn nên chỉ định múi giờ là UTC và ngôn ngữ là tiếng Anh và thậm chí có thể đặt lịch rõ ràng. –

+0

nó không hoạt động ... Tôi đã có [email protected] nếu tôi làm một output.toString() – techsjs2012

0

Đây là vấn đề với các mã trong câu hỏi đã chỉnh sửa của bạn:

System.out.println(output.toString()); 

Bạn đang in ra số SimpleDateFormat, không phải là kết quả của việc gọi format. Thật vậy, bạn phớt lờ kết quả của gọi format:

output.format(input.parse(dateString)); 

Chỉ cần thay đổi nó để:

System.out.println(output.format(input.parse(dateString))); 

Hoặc rõ ràng hơn:

Date parsedDate = input.parse(dateString); 
String reformattedDate = output.format(parsedDate); 
System.out.println(reformattedDate); 
Các vấn đề liên quan