前回の続きですが、時刻でも同じです。
たとえば8時52分60秒は、文字列をDate型にパースする際に、厳密な解析を行わなければ8時53分0秒と解釈されます。
public class DateSample { public static void main(String[] args) { DateFormat dt = new SimpleDateFormat("hh:mm:ss"); // dt.setLenient(false); try { System.out.println(dt.parseObject("08:52:60")); } catch (ParseException e) { System.out.println("Date型に変換できません!!"); } } }
実行結果
Thu Jan 01 08:53:00 JST 1970
一方、厳密な解析を行うとエラーになります。
public class DateSample { public static void main(String[] args) { DateFormat dt = new SimpleDateFormat("hh:mm:ss"); dt.setLenient(false); // ← ここを追加 try { System.out.println(dt.parseObject("08:52:60")); } catch (ParseException e) { System.out.println("Date型に変換できません!!"); } } }
実行結果
Date型に変換できません!!
でも、"8:5:6"とかは、厳密な解析でもエラーとならず、"08:05:06"と同じ意味で解釈されます。
(追記)
うるう秒が発生した場合、○○時XX分60秒が発生するはず!正しくパースできないのか!?
- 作者:高橋 麻奈
- 発売日: 2019/01/22
- メディア: 単行本