У меня есть переменная LocalDate с именем date, при печати она отображает 1988-05-05 Мне нужно преобразовать это, чтобы напечатать как 05.May 1988. Как это сделать?
У меня есть переменная LocalDate с именем date, при печати она отображает 1988-05-05 Мне нужно преобразовать это, чтобы напечатать как 05.May 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.