Проверка формата даты внутри Groovy контроллера - PullRequest
4 голосов
/ 18 января 2010

Мне нужно проверить формат строки даты, приходящей из файла CSV. Я использую парсер csvReader (au.com.bytecode.opencsv.CSVReader). Ниже приведен код, который я использую, чтобы получить данные из программы чтения CSV и изменить их на формат даты.

def String strToDate = csvrow[monatVal]

myDate = new Date().parse("dd.MM.yy HH:mm",strToDate)

Проблема в том, что в файле CSV есть запись даты, например, для. '41 .01.10 12:22 ', у меня есть следующее, когда я печатаю' myDate '

myDate = '10.02.10 12:22' -> Это добавляет 10 дней к февральскому месяцу.

Я бы хотел проверить проверку формата даты. Есть ли способ проверить dateString при разборе?

Заранее спасибо, Sudheer

Разбор, вероятно, лучше использовать как статический метод, то есть Date.parse (формат, ввод), который возвращает новый экземпляр Date - верно?

1 Ответ

7 голосов
/ 18 января 2010

Метод, который вы используете для анализа даты, устарел.Вместо этого следует использовать DateFormat.parse() или SimpleDateFormat.parse().

В этих классах есть метод setLenient(boolean).Если для параметра lenient установлено значение false, то при разборе 41.01 вы не получите 10 февраля, вместо этого анализатор выдаст исключение ParseException.

Запустите следующий код, чтобы понять, что я имею в виду

def dateParser = new java.text.SimpleDateFormat("dd.MM.yy HH:mm")

// If the next line is removed the date will be parsed to 10 February instead of 
// throwing a ParseException
dateParser.lenient = false  

dateParser.parse('41.01.10 12:22')
...