Dizede nanoOfSeconds olabilecek veya bulunmayabilecek bir dize LocalTime (java-8 not joda) dönüştürmem gerekiyor. Dize formatı 07:06:05
veya 07:06:05.123456
biçimindedir. Dize saniyeler içinde ondalık bir yere sahip olabilir veya olmayabilir ve Nano Saniye bölümünü temsil edecek herhangi bir sayıda karakter olabilir.NanoOfSeconds ile/olmadan LocalTime'a String Dizesi
DateTimeFormatter dtf;
if (time1.contains(".") {
dtf = DateTimeFormatter.ofPattern("H:mm:ss.SSSSSS);
} else {
dtf = DateTimeFormatter.ofPattern("H:mm:ss);
}
Bu iyi çalışır ve: Ben gibi iki biçimleri arasında ayrım yapmak bir IF deyimi kullanabilirsiniz böyle
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("H:mm:ss");
veya
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("H:mm:ss.SSSSSS");
gibi bir DateTimeForamtter kullanılması
Ben bununla Tamam ama ondalık poin sonra çeşitli sayıda pozisyonları kullanabilmek gerekir t.
örnek bir veri seti olabilir:
[11:07:59.68750, 11:08:00.781250, 11:08:00.773437500, 11:08:01]
biçimlendirici ondalık basamak sayısı bilinmeyen olduğunda bir java.time.format.DateTimeParseException
atma olmadan ondalık sonra herhangi bir sayıda rakam ayrıştırmak için izin vermek için bir yolu var mı?
Gerçekten basit bir şeyi kaçırmayı umuyorum.
İlk soruyu yanıtlamak için, basitçe 'if (stringValue.length()> 7) dizesinin uzunluğunu test edebilirsiniz. {// ikinci biçimlendiriciyi kullan} else if (stringValue.length() == 7) {// birinci biçimlendiriciyi kullan} "İkinci soruyu anladığımdan emin değilim, detaylandırır mısınız? –
Ikinci ya da ben anlamadım - Ben ilk :) cevabım verilen cevapsız olduğunu umuyorum –
Belirli bir yeri kontrol etmek ve buna dayalı bir format karar vermek için çirkin görünüyor. Karakter sayısında biraz daha az katı olan bir biçimlendiriciye sahip olmak için mantıklı görünüyor (ancak yine dizelerle uğraşıyoruz) – jbolt