iT邦幫忙

0

民國年轉西元年時發生錯誤

  • 分享至 

  • xImage

今天客戶給我提了一個問題,假如一個人的生日是民國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

請問各位大佬有什麼更好的處理方法?

看更多先前的討論...收起先前的討論...
淺水員 iT邦大師 6 級 ‧ 2023-05-18 16:23:17 檢舉
民國應該是沒有零年的說法
民國元年的前一年就是民國前一年了
https://zh.wikipedia.org/zh-tw/0%E5%B9%B4
話說...台灣有活超過111歲的人瑞嗎@@....?
--
查了一下Google真的有~最大118歲XD...
billyfan iT邦新手 5 級 ‧ 2023-05-19 09:03:29 檢舉
我去查了年代對照表,還真的是從民國1年開始算,根本沒有民國0年,我去嗆了客戶。
笑死 嗆爆他XD
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

7
純真的人
iT邦大師 1 級 ‧ 2023-05-18 14:54:42
最佳解答

這個不用函數轉換吧@@..

直接用基本計算就可以了~
0000510 + 19110000 = 19110510
像我的SQL都是快速換算

select Convert(date,Convert(varchar,Convert(int,'0000510') + Convert(int,'19110000')))
結果:1911-05-10
akashakul
iT邦見習生 ‧ 2023-05-18 14:51:52
【**此則訊息已被站方移除**】

我要發表回答

立即登入回答