今天客戶給我提了一個問題,假如一個人的生日是民國0年5月10日,他的生日傳到後台的時候會轉成西元年,我的方法如下代碼:
/**
* Transfer minguo date to AD date.
* 民國年 yyyMMdd 轉 西元年 yyyyMMdd
*
* @param dateString the String dateString
* @return the string
*/
public static String transferMinguoDateToADDate(String dateString) {
Chronology chrono = MinguoChronology.INSTANCE;
DateTimeFormatter df = new DateTimeFormatterBuilder().parseLenient()
.appendPattern("yyyMMdd")
.toFormatter()
.withChronology(chrono)
.withDecimalStyle(DecimalStyle.of(Locale.getDefault()));
ChronoLocalDate chDate = chrono.date(df.parse(dateString));
return LocalDate.from(chDate).format(DateTimeFormatter.ofPattern("yyyyMMdd"));
}
在運行到ChronoLocalDate chDate = chrono.date(df.parse(dateString));
時會報錯
我的想法是假如接到是民國0年出生,就先+1,讓程式不會報錯,換算成西元年之後再-1
請問各位大佬有什麼更好的處理方法?
這個不用函數轉換吧@@..
直接用基本計算就可以了~
0000510 + 19110000 = 19110510
像我的SQL都是快速換算
select Convert(date,Convert(varchar,Convert(int,'0000510') + Convert(int,'19110000')))
結果:1911-05-10