Bir dizeyi a'ya nasıl dönüştürebilirim LocalDate
?
Gibi örnekler gördüm:
LocalDate dt = new LocalDate("2005-11-12");
Ama dizelerim şöyle:
2005-nov-12
Bir dizeyi a'ya nasıl dönüştürebilirim LocalDate
?
Gibi örnekler gördüm:
LocalDate dt = new LocalDate("2005-11-12");
Ama dizelerim şöyle:
2005-nov-12
Yanıtlar:
Joda Time'ı kullanırken şunları kullanmalısınız DateTimeFormatter
:
final DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MMM-dd");
final LocalDate dt = dtf.parseLocalDate(yourinput);
Java 8 veya sonraki bir sürümünü kullanıyorsanız, hertzi'nin cevabına bakın
Java 1.8'den beri, java.time sınıflarını kullanarak bunu fazladan bir kitaplık olmadan gerçekleştirebilirsiniz . Öğreticiye bakın .
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MMM-dd");
formatter = formatter.withLocale( putAppropriateLocaleHere ); // Locale specifies human language for translating, and cultural norms for lowercase/uppercase and abbreviations and such. Example: Locale.US or Locale.CANADA_FRENCH
LocalDate date = LocalDate.parse("2005-nov-12", formatter);
Sözdizimi neredeyse aynıdır.
DateTime'dan LocalDate'e gitmeniz gerekebilir.
Joda Time Kullanımı:
DateTimeFormatter FORMATTER = DateTimeFormat.forPattern("yyyy-MMM-dd");
DateTime dateTime = FORMATTER.parseDateTime("2005-nov-12");
LocalDate localDate = dateTime.toLocalDate();
Tarih saat biçimlendirmesi org.joda.time.format.DateTimeFormatter class
,. Üç sınıf, biçimlendiriciler oluşturmak için fabrika yöntemleri sağlar ve bu bir tanesidir. Diğerleri ISODateTimeFormat
ve DateTimeFormatterBuilder
.
DateTimeFormatter format = DateTimeFormat.forPattern("yyyy-MMM-dd");
LocalDate lDate = new LocalDate().parse("2005-nov-12",format);
final org.joda.time.LocalDate class
saat dilimi olmayan bir tarihi temsil eden değişmez bir tarih saat sınıfıdır . Kronolojinin de olması koşuluyla LocalDate
, iş parçacığı açısından güvenli ve değişmezdir . Sağlanan tüm standart Kronoloji sınıfları iş parçacığı için güvenli ve değişmezdir.
DateTimeFormatter
doğrudan bir karakter dizisini ayrıştırmak için kullanılabilen yerleşik formatlara sahiptir. Büyük / küçük harfe duyarlıdır, Kasım işe yarayacaktır ancak nov ve NOV çalışmayacaktır:
DateTimeFormatter pattern = DateTimeFormatter.ofPattern("yyyy-MMM-dd");
try {
LocalDate datetime = LocalDate.parse(oldDate, pattern);
System.out.println(datetime);
} catch (DateTimeParseException e) {
// DateTimeParseException - Text '2019-nov-12' could not be parsed at index 5
// Exception handling message/mechanism/logging as per company standard
}
DateTimeFormatterBuilder
biçimlendirici oluşturmak için özel bir yol sağlar. Büyük / Küçük Harfe Duyarlı Değildir, Kas, Kas ve NOV aynı şekilde değerlendirilecektir.
DateTimeFormatter f = new DateTimeFormatterBuilder().parseCaseInsensitive()
.append(DateTimeFormatter.ofPattern("yyyy-MMM-dd")).toFormatter();
try {
LocalDate datetime = LocalDate.parse(oldDate, f);
System.out.println(datetime); // 2019-11-12
} catch (DateTimeParseException e) {
// Exception handling message/mechanism/logging as per company standard
}