У мене є змінна LocalDate під назвою дата, коли я друкую її відображається 1988-05-05 мені потрібно перетворити це, щоб воно було надруковано як 05. травня 1988.Як це зробити?
У мене є змінна LocalDate під назвою дата, коли я друкую її відображається 1988-05-05 мені потрібно перетворити це, щоб воно було надруковано як 05. травня 1988.Як це зробити?
Відповіді:
SimpleDateFormat не працюватиме, якщо він починає з LocalDate, який є новим на Java 8. З того, що я бачу, вам доведеться використовувати DateTimeFormatter, http://docs.oracle.com/javase/8/docs/api/java/ час / формат / DateTimeFormatter.html .
LocalDate localDate = LocalDate.now();//For reference
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd LLLL yyyy");
String formattedString = localDate.format(formatter);
Це має бути надруковано 05 травня 1988 р. Щоб отримати період після дня і до місяця, можливо, вам доведеться використовувати "dd'.LLLL 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.