2015-01-27 17 views
36

Tôi có một biến LocalDate được gọi là ngày, khi tôi in nó hiển thị 1988-05-05 Tôi cần phải chuyển đổi này để được in như 05.May 1988.How để làm điều này?Làm thế nào để định dạng LocalDate thành chuỗi?

+3

Hãy xem lớp [DateTimeFormatter] (http://docs.oracle.com/javase/8/docs/api/java/time/format/DateTimeFormatter.html). Nó thậm chí còn có các ví dụ về cách chuyển đổi thành và từ 'String'. – azurefrog

+2

Bạn nên hiển thị một số mã, những gì bạn đã thử cho đến nay và những gì không hoạt động để mọi người có thể giúp bạn. – bvidal

+0

Tôi đã cố gắng làm điều đó nhưng vì điều này gây phiền nhiễu "nó không đáp ứng tiêu chuẩn chất lượng" của tôi cuối cùng đã từ bỏ, tôi mất 15 phút để đăng bài này bởi vì tôi phải sửa "i" bằng "I". – Jasko

Trả lời

104

SimpleDateFormat sẽ không hoạt động nếu anh ta bắt đầu với LocalDate mới trong Java 8. Từ những gì tôi có thể thấy, bạn sẽ phải sử dụng DateTimeFormatter, http://docs.oracle.com/javase/8/docs/api/java/time/format/DateTimeFormatter.html.

LocalDate localDate = LocalDate.now();//For reference 
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd LLLL yyyy"); 
String formattedString = localDate.format(formatter); 

Điều đó sẽ in 5 tháng 5 năm 1988. Để có được khoảng thời gian sau ngày và trước khi tháng, bạn có thể phải sử dụng "dd'.LLLL yyyy"

+3

Cảm ơn bạn rất nhiều, điều này giúp, nhưng nó đã không làm việc với 'LLLL' để hiển thị tên của tháng nhưng với 'MMMM' tôi thấy điều này lạ kể từ ngay cả trong tài liệu nó nói cách khác. Nhưng một lần nữa cảm ơn bạn đã giúp đỡ tôi. – Jasko

+0

Bây giờ localDate.format (định dạng); không hoạt động ở tất cả –

+0

phiên bản JDK nào của bạn bằng cách sử dụng @ProgrammersBlock –

-6

Một cách khá thoải mái để làm điều này là sử dụng SimpleDateFormat tôi sẽ chỉ cho bạn cách:

SimpleDateFormat sdf = new SimpleDateFormat("d MMMM YYYY"); 
Date d = new Date(); 
sdf.format(d); 

tôi thấy rằng bạn có ngày trong một biến:

sdf.format(variable_name); 

Cheers.

+1

'SimpleDateFormat' có thể hoạt động với' LocalDate'? – Tom

+0

Bạn có ý nghĩa gì khi 'có thể làm việc với'? – nom

+2

OP muốn in nội dung của một phiên bản 'LocalDate' trong một định dạng cụ thể. Làm thế nào có thể 'SimpleDateFormat' giúp anh ta ở đây? – Tom

-4
LocalDate date = LocalDate.now();//For reference 
System.out.println(DateTimeFormat.longDate().print(date)); 
System.out.println(date.toString("dd.MMMM YYYY")); 

Hãy coi chừng, ngôn ngữ của tháng phụ thuộc vào ngôn ngữ hoặc cái gì đó.

see more

0

Với sự giúp đỡ của bài viết ProgrammersBlock tôi đến với điều này. Nhu cầu của tôi hơi khác một chút. Tôi cần phải lấy một chuỗi và trả về nó như là một đối tượng LocalDate. Tôi đã được trao mã đã được sử dụng lịch cũ và SimpleDateFormat. Tôi muốn làm cho nó thêm một chút nữa. Đây là những gì tôi nghĩ ra.

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


    void ExampleFormatDate() { 

    LocalDate formattedDate = null; //Declare LocalDate variable to receive the formatted date. 
    DateTimeFormatter dateTimeFormatter; //Declare date formatter 
    String rawDate = "2000-01-01"; //Test string that holds a date to format and parse. 

    dateTimeFormatter = DateTimeFormatter.ISO_LOCAL_DATE; 

    //formattedDate.parse(String string) wraps the String.format(String string, DateTimeFormatter format) method. 
    //First, the rawDate string is formatted according to DateTimeFormatter. Second, that formatted string is parsed into 
    //the LocalDate formattedDate object. 
    formattedDate = formattedDate.parse(String.format(rawDate, dateTimeFormatter)); 

} 

Hy vọng điều này sẽ giúp ai đó, nếu có ai thấy cách tốt hơn để thực hiện tác vụ này, vui lòng thêm thông tin bạn nhập vào.

Các vấn đề liên quan