2010-01-18 2 views
4

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' -> 2 월에 10 일 추가.

여기에 날짜 형식 유효성 검사가 필요합니다. 구문 분석하는 동안 dateString을 검사하는 방법이 있습니까? 사전에

감사합니다, Sudheer

구문 분석, 그것은 새 Date 인스턴스를 반환하는 정적 메서드, 즉 다음 Date.parse (형식, 입력)로 아마 최고 - 맞죠?

답변

7

날짜 구문 분석을 위해 사용하는 방법은 더 이상 사용되지 않습니다. 대신 DateFormat.parse() 또는 SimpleDateFormat.parse()을 사용해야합니다.

이러한 클래스는 setLenient(boolean) 메서드를가집니다. lenient를 false로 설정하면 41.01을 구문 분석 할 때 2 월 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') 
+0

감사 돈을 무엇을 의미하는지에 관해 알기 위해 다음 코드를 실행합니다. lenient를 false로 설정합니다. 하지만 올바른 형식을 제공하는 대신 dateParser.parse ('41 .01.10 12:22:34 ')와 같은 것을 제공합니다. 초 패턴이 SimpleDateFormat으로 설정된 패턴이 아니라는 것을 인식하지 못합니다. 어떻게 확인합니까? 이미 패턴을 적용 해 보았습니다. Dosent는 많이 변합니다. – sudheer

+0

SimpleDateFormat가 이것을 지원하는지 잘 모르겠습니다. 어쩌면 패턴 문자열의 길이와 날짜 문자열의 길이가 같은지 확인한 다음 날짜 문자열을 구문 분석하려고 할 수 있습니다. –