2017-06-28 129 views
0

我想讓這個人在他/她的生日的日期寫下來,之後我想將它與pi的數量進行比較。 但我希望程序是靈活的。因此,日期不應該像 daymonthyear(13091975),但也像day.month.year(13.09.1975)或像日 - 月 - 年(13-09-1975) 我已經找到了一個想法,但它不做工刪除特殊符號/分隔符例如點,逗號, - ,int out

String sep = ""; 
String geb = nf_datum.getText(); 
geb = geb.replaceAll(".", Matcher.quoteReplacement(sep)); 

我發現這個想法用「的replaceAll」在這裏:replaceAll "/" with File.separator 我希望有人能幫助我嗎?

+0

我不舒爾你如何的問題是指:d,但它是一個GUI和nf_datum是多少場,後來我把數字填進一個數組 – Jana

+0

你的java版本是什麼?你可以使用Java 8嗎? –

+0

當你說「它不工作」 - 它以什麼方式不起作用?你得到一個錯誤,或只是不是你期望的輸出?一般來說,試圖編寫自己的代碼來處理日期解析和格式化邏輯是一個非常糟糕的主意; Java內置許多不同的實用程序以幫助您完成工作。我建議你看一下文檔,從這裏開始(https://docs.oracle.com/javase/tutorial/i18n/format/dateintro.html),看看Java會免費給你什麼。 – DaveyDaveDave

回答

0

使用java8你可以得到的字符串,並定義一個DateTimeFormatter,這會給您可以靈活地解析字符串轉換成LOCALDATE的,你不需要照顧字符串如何「看起來像」,之後你會得到LOCALDATE的對象,從中可以獲取的年,月,日

String geburtstag = "-"; 
DateTimeFormatter formatter = DateTimeFormatter 
      .ofPattern("[ddMMyyyy]" + "[ddMMyyyy]" + "[dd.MM.yyyy]" + "[dd-MM-yyyy]"); 
// case1 
geburtstag = "23.06.2017"; 
LocalDate ldt = LocalDate.parse(geburtstag, formatter); 
System.out.println("Year: " + ldt.getYear()); 
System.out.println("Month: " + ldt.getMonthValue()); 
System.out.println("Day: " + ldt.getDayOfMonth()); 
// case2 
geburtstag = "23062017"; 
ldt = LocalDate.parse(geburtstag, formatter); 
System.out.println("Year: " + ldt.getYear()); 
System.out.println("Month: " + ldt.getMonthValue()); 
System.out.println("Day: " + ldt.getDayOfMonth()); 
// case3 
geburtstag = "23-06-2017"; 
ldt = LocalDate.parse(geburtstag, formatter); 
System.out.println("Year: " + ldt.getYear()); 
System.out.println("Month: " + ldt.getMonthValue()); 
System.out.println("Day: " + ldt.getDayOfMonth()); 
+0

說實話我根本不懂你的(甚至沒有開頭):( – Jana

+0

哪部分@Jana? –

+0

在開始時你定義了DateTimeFormatter,對吧?什麼意思是白衣.of Pattern?我不知道指令是什麼意思或做什麼,然後你用解析的方式轉換LocalDate在什麼地方?(因爲ddMMyyyy沒問題,我需要這種日期,所以我只是想把日期,如果它是用另一種方式編寫的話)。 – Jana

相關問題