Сделайте SimpleDateFormat.parse () сбоем в недопустимые даты (например, месяц больше, чем 12),

Я использую java.text.SimpleDateFormat проанализировать строки формы "yyyyMMdd".

Если я пытаюсь проанализировать строку с месяцем, больше, чем 12 вместо сбоя, это переворачивается к следующему году. Полная выполнимая репродукция:

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class ParseDateTest {

    public static void main(String[] args) throws ParseException {

        SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd");
        Date result = format.parse("20091504"); // <- should not be a valid date!
        System.out.println(result); // prints Thu Mar 04 00:00:00 CST 2010
    }
 }

У меня был бы a ParseException брошенный.

Есть ли какой-либо non-hacky способ вынудить исключение произойти?. Я имею в виду, я не хочу вручную проверять, больше ли месяц, чем 12. Это довольно смешно.

Спасибо за любое предложение.

Примечание: Я уже знаю о Времени Joda, но мне нужен в сделанный в плоскости JDK без внешних библиотек.

50
задан BalusC 6 November 2015 в 01:56
поделиться