Mam zmienną LocalDate o nazwie date, kiedy drukuję, wyświetla 1988-05-05 Muszę przekonwertować to na 05. maj 1988.Jak to zrobić?
Mam zmienną LocalDate o nazwie date, kiedy drukuję, wyświetla 1988-05-05 Muszę przekonwertować to na 05. maj 1988.Jak to zrobić?
Odpowiedzi:
SimpleDateFormat nie zadziała, jeśli zaczyna od LocalDate, która jest nowością w Javie 8. Z tego co widzę, będziesz musiał użyć DateTimeFormatter, http://docs.oracle.com/javase/8/docs/api/java/ czas / format / DateTimeFormatter.html .
LocalDate localDate = LocalDate.now();//For reference
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd LLLL yyyy");
String formattedString = localDate.format(formatter);
Powinien zostać wydrukowany 05 maja 1988. Aby uzyskać okres po dniu i przed miesiącem, może być konieczne użycie „dd'.LLLL yyyy”
Przy pomocy postów ProgrammersBlock wymyśliłem to. Moje potrzeby były nieco inne. Musiałem pobrać ciąg i zwrócić go jako obiekt LocalDate. Otrzymałem kod, który korzystał ze starszego kalendarza i SimpleDateFormat. Chciałem, żeby było trochę bardziej aktualne. Oto, co wymyśliłem.
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));
}
Miejmy nadzieję, że to komuś pomoże, jeśli ktoś widzi lepszy sposób wykonania tego zadania, dodaj swój wkład.
LocalDate.parse(rawDate)! String.formatjest tutaj używany w całkowicie niewłaściwej formie, w rzeczywistości zwraca tylko pierwszy ciąg; DateTimeFormatternie jest w ogóle wykorzystywane; parsejest staticmetodą LocalDate; formattedDateto nie jest sformatowana data, nawet String(zgodnie z wnioskiem, o którym mowa)
Istnieje wbudowany sposób formatowania LocalDate dla joda lib
import org.joda.time.LocalDate;
LocalDate localDate = LocalDate.now();
String dateFormat = "MM/dd/yyyy";
localDate.toString(dateFormat);
Jeśli jeszcze go nie masz - dodaj to do build.gradle:
implementation 'joda-time:joda-time:2.9.5'
Miłego kodowania! :)
Całkiem fajnym sposobem na zrobienie tego jest użycie SimpleDateFormat, a pokażę ci, jak:
SimpleDateFormat sdf = new SimpleDateFormat("d MMMM YYYY");
Date d = new Date();
sdf.format(d);
Widzę, że masz datę w zmiennej:
sdf.format(variable_name);
Twoje zdrowie.
LocalDateinstancji w określonym formacie. Jak mógł SimpleDateFormatmu tu pomóc?
Strings.