ฉันมีตัวแปร LocalDate ที่เรียกว่าวันที่เมื่อฉันพิมพ์มันจะแสดง 1988-05-05 ฉันจำเป็นต้องแปลงค่านี้ให้พิมพ์เป็นวันที่ 05.May 1988 วิธีการทำเช่นนี้?
ฉันมีตัวแปร LocalDate ที่เรียกว่าวันที่เมื่อฉันพิมพ์มันจะแสดง 1988-05-05 ฉันจำเป็นต้องแปลงค่านี้ให้พิมพ์เป็นวันที่ 05.May 1988 วิธีการทำเช่นนี้?
คำตอบ:
SimpleDateFormat จะไม่ทำงานหากเขาเริ่มต้นด้วย LocalDate ซึ่งเป็นของใหม่ใน Java 8 จากสิ่งที่ฉันเห็นคุณจะต้องใช้ DateTimeFormatter, http://docs.oracle.com/javase/8/docs/api/java/ เวลา
LocalDate localDate = LocalDate.now();//For reference
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd LLLL yyyy");
String formattedString = localDate.format(formatter);
ควรพิมพ์วันที่ 5 พฤษภาคม 1988 หากต้องการรับช่วงเวลาหลังจากวันและก่อนเดือนคุณอาจต้องใช้ "dd'.LLLL yyyy"
อาจสั้นเป็น:
LocalDate.now().format(DateTimeFormatter.ofPattern("dd/MM/yyyy"));
System.out.println(LocalDate.now().format(DateTimeFormatter.ofPattern("dd.MMMM yyyy")));
คำตอบข้างต้นแสดงให้เห็นในวันนี้
ด้วยความช่วยเหลือของโพสต์ ProgrammersBlock ฉันมาด้วยนี้ ความต้องการของฉันแตกต่างกันเล็กน้อย ฉันต้องการใช้สตริงและส่งคืนเป็นวัตถุ LocalDate ฉันส่งรหัสที่ใช้ปฏิทินรุ่นเก่าและ SimpleDateFormat ฉันต้องการทำให้เป็นปัจจุบันมากขึ้นเล็กน้อย นี่คือสิ่งที่ฉันมาด้วย
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));
}
หวังว่านี่จะช่วยให้ใครบางคนถ้าใครเห็นวิธีที่ดีกว่าในการทำงานนี้โปรดเพิ่มการป้อนข้อมูลของคุณ
LocalDate.parse(rawDate)! String.formatกำลังถูกใช้งานในรูปแบบที่ไม่ถูกต้องที่นี่จริง ๆ แล้วแค่ส่งคืนสายแรก; DateTimeFormatterไม่ได้ถูกนำมาใช้ในทุก parseเป็นstaticวิธีการของLocalDate; formattedDateคือไม่ได้วันที่จัดรูปแบบไม่ได้String(ตามที่ร้องขอในคำถาม)
มีวิธีการจัดรูปแบบ LocalDate ในตัวสำหรับjoda lib
import org.joda.time.LocalDate;
LocalDate localDate = LocalDate.now();
String dateFormat = "MM/dd/yyyy";
localDate.toString(dateFormat);
ในกรณีที่คุณยังไม่มี - เพิ่มสิ่งนี้ลงใน build.gradle:
implementation 'joda-time:joda-time:2.9.5'
การเข้ารหัสมีความสุข! :)
วิธีที่ดีในการทำเช่นนี้คือการใช้SimpleDateFormatฉันจะแสดงวิธี:
SimpleDateFormat sdf = new SimpleDateFormat("d MMMM YYYY");
Date d = new Date();
sdf.format(d);
ฉันเห็นว่าคุณมีวันที่ในตัวแปร:
sdf.format(variable_name);
ไชโย
LocalDateอินสแตนซ์ในรูปแบบเฉพาะ จะSimpleDateFormatช่วยเขาได้อย่างไรที่นี่
Strings