java. text. Simple DateFormat 의 parse () 방법 에 존재 하 는 구덩이

1082 단어 Java
머리말
문자열 을 java.util.Date 대상 으로 바 꿀 때 편 의 를 위해 아예 java.text.SimpleDateFormatparse() 방법 을 사용 했다.그러나 나 는 parse() 이 날짜 문자열 을 분석 할 때 그 자체 에 문제 가 있다 는 것 을 발견 했다.
문제 코드
다음은 문제 가 발생 한 코드 입 니 다.
DateFormat df=new SimpleDateFormat("yyyy-MM-dd");
try {
	Date date=df.parse("2016--1-01");
	System.out.println(date);
} catch (ParseException e) {
	e.printStackTrace();
}

분석 하 다.
이 코드 는 많은 사람들 이 이상 을 던 졌 다 고 생각 하지만 실제로 이 코드 의 운행 결 과 는 Sun Nov 01 00: 00: 00 CST 2015 입 니 다.
원본 코드 의 디 버 깅 을 통 해 2016--1-01 에서 달 은 음수 로 식별 할 수 있다 는 것 을 알 게 되 었 다. 이 문자열 은 20161 월 이전 2 개 월 의 첫날 로 인식 되 었 다. (달 은 2 개 월 로 계산 되 기 시작 했다)
해결 방안
해결 방안 은 다음 과 같다.
DateFormat df=new SimpleDateFormat("yyyy-MM-dd");
try {
	Date date=df.parse("2016--1-01");
	//    /         ,      (true)
	df.setLenient(false);
	System.out.println(date);
} catch (ParseException e) {
	e.printStackTrace();
}

좋은 웹페이지 즐겨찾기