Soruma ilişkin soru here - nasıl özgün pattern
alacağım DateTimeFormatter
verilen dize?Orijinal kalıbı alın Bir JDK 8 verilen dizge DateTimeFormatter?
cevap
on the mailing list diye sorulmuştur ve yanıt, orijinal desen korunmadığından mümkün olmamasıdır.
Aynı iş parçacığı, bilgileri içeren bir DateTimeFormatterBuilder
kullanılmasını önerir.
Ben DateTimeFormatterBuilder' yerelleştirilmiş biçim oluşturmak için izin verir, ancak yanlış değilim, "DateTimeFormatter" nesnesini oluşturmak için kullanılan kesin biçimi tam olarak vermiyor. –
@RohitJain Muhtemelen durum budur - javadoc orijinal kalıbı geri verme sözü vermez. – assylias
Sorunuza doğrudan bir yanıt olmayabilir, ancak yardımcı olabilir.
bunu biçimlendirici statik yöntemini çağırabilirsiniz inşasının parametrelerini biliyorsanız:
DateTimeFormatterBuilder.getLocalizedDateTimePattern(FormatStyle dateStyle, FormatStyle timeStyle, Chronology chrono, Locale locale)
Bu, bir dize olarak desen verecektir.
Ya da daha basitçe: '((SimpleDateFormat) DateFormat.getDateInstance (DateFormat.SHORT, Locale.FRENCH)) toPattern() – qwertzguy
Basit veya zarif bir çözüm değil, ancak DateTimeFormatter
'un .toString()
yönteminin sonuçlarını kullanarak, sonuçta oluşan Dizeyi ayrıştırarak kendi orijinal desenini yeniden oluşturan kendi kodunuzu döndürmek mümkün olabilir.
çeşitli modelleri için bir kaç .toString()
sonuçlarını yazdırır Bazı kod:
java.time.format.DateTimeFormatter variousFormatPatterns =
java.time.format.DateTimeFormatter.ofPattern("yy MM dd");
System.out.println("Test 1: " + variousFormatPatterns.toString());
variousFormatPatterns = java.time.format.DateTimeFormatter.ofPattern("yy-MM-dd");
System.out.println("\nTest 2: " + variousFormatPatterns.toString());
variousFormatPatterns = java.time.format.DateTimeFormatter.ofPattern("yyMMdd");
System.out.println("\nTest 3: " + variousFormatPatterns.toString());
variousFormatPatterns = java.time.format.DateTimeFormatter.ofPattern("MM/dd/yyyy HH:mm:ss");
System.out.println("\nTest 4: " + variousFormatPatterns.toString());
Sonuçları (boşluk/tire/eğik çizgi/kolon ayraç karakterlerinden tutulmasını dikkat edin):
Testi 1: İndirgenmişDeğer (YearOfEra, 2,2,2000-01-01) '' Değer (MonthOfYear, 2) '' Değer (DayOfMonth, 2)
Test 2: ReducedValue (YearOfEra, 2,2,2000-01-01) '-' Değer (MonthOfYear, 2) '-' Değer (DayOfMonth, 2)
Test 3: ReducedValue (YearOfEra, 2,2,2000-01-01) Değer (MonthOfYear, 2) değer (DayOfMonth, 2)
Test 4: Değer (MonthOfYear, 2) '/' değer (DayOfMonth, 2) '/' Değeri (YearOfEra, 4,19, EXCEEDS_PAD) 'Değeri (HOUROFDAY, 2)': 'Değeri (MinuteOfHour, 2)':' Değeri (SecondOfMinute, 2)
Bu yaklaşımı uygulamak, kodu java.time.format.DateTimeFormatterBuilder
'da incelemeyi gerektirir. appendPattern(String pattern)
yöntemi için JavaDoc özellikle yararlı görünüyor. Yalnızca birkaç tür kalıpla çalıştığınızı biliyorsanız, bazı kısayollar alabilirsiniz. DateTimeFormatterBuilder
kodu ile hızlı bir göz atıldığında
, muhtemelen gibi Value
, ReducedValue
, Fraction
vb gelecekteki Java sürümleri haber verilmeksizin değiştirebilir Strings olarak çözümün bu tip güvenerek bir risk olacaktır.
- 1. Java 8 LocalDateTime ve DateTimeFormatter
- 2. Oracle JDK 8 ve Open JDK 8 arasındaki fark nedir?
- 3. DateTimeFormatter
- 4. DateTimeFormatter weekday, bir
- 5. Java JDK 8 IndexedPropertyDescriptor, JDK 7'den beri Liste nesnesi
- 6. dalgakıran 9 + JDK 8 + yayı 4 Açıklamalar JDK 8'e yükselttikten sonra
- 7. Spark ve Serializable DateTimeFormatter
- 8. JToken: Ham/orijinal JSON değerini alın
- 9. LOCALDATE ve DateTimeFormatter Japon yerel ayar
- 10. jQuery verilen giriş kimliği, etiket metni alın
- 11. Bir dizi dizi ve dizge nasıl sıralanır?
- 12. Komut Kalıbı
- 13. Sorgu Nesne Kalıbı (Tasarım Kalıbı)
- 14. iReports 5.6.0, Netbeans 8 ve JDK 1.8 ile çalıştırılamıyor
- 15. JavaFx Webview JDK 8 kendinden imzalı sertifika yükleyemiyor
- 16. JAX-WS Maven Eklentisi JDK ile Çalışmıyor 8
- 17. Dizge veya Dizge alan bir Ruby yöntemi nasıl tanımlanır?
- 18. Ay adı Joda-Time DateTimeFormatter
- 19. Java DateTimeFormat kalıbı?
- 20. iOS 8: Cocoa Touch Framework'den kaynak alın
- 21. Java 8 lambda'da, akıştaki orijinal nesneye nasıl erişilir?
- 22. Cron zamanlayıcı "devre dışı kalıbı kalıbı"
- 23. jdk 7
- 24. açısal direktifi dahilinde orijinal çapraz dahil içeriğini alın
- 25. Clojure bir JDK gerektiriyor mu?
- 26. Uygulamamda bir JDK dağıtabilir miyim?
- 27. MVVM Kalıbı
- 28. JDK 1.7, bir nokta ile * başlayan * özel etiketlere izin verir. JDK 1.8 bunu yasakladı mı?
- 29. Java 8 DateTimeFormatter ile iki harf yıl ayrıştırmak için temel tarih nasıl değiştirilir?
- 30. DataContractJsonSerializer bir nesneyi bir dizge olarak serileştirebilir?
@KevinWorkman JDK 8 DateTimeFormatter sınıfı ile ilgili olarak, yinelenen bir yineleme değil, joda zaman sınıfı – bowmore
@bowmore JDK 8 DateTimeFormatter sınıfı, JodaTime DateTimeFormatter sınıfına dayanıyordu. Bu sorunun cevabı, bu sorunun cevaplarıdır. –
@KevinWorkman Biri diğerine ilham verdi, onları aynı yapmadı. Davranışları çeşitli şekillerde farklıdır. Yine de, cevaplar aynı olsa da, bu soru sorulan kişi, ikisi arasındaki ilişkiden habersiz olabileceği için, soru bir kopya değildir. – bowmore