Jas*_*son 23 java date-format simpledateformat
有没有办法解析以下日期字符串July 23 1916而不是July 23 2016?
System.out.println(new SimpleDateFormat("yy/MM/dd", Locale.US).parse("16/07/23"));
Run Code Online (Sandbox Code Playgroud)
ret*_*eto 35
Java Doc(http://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html)说:
对于使用缩写年份模式("y"或"yy")进行解析,SimpleDateFormat必须解释相对于某个世纪的缩写年份.它通过将日期调整为创建SimpleDateFormat实例之前的80年和20年之后来实现此目的.例如,使用1997年1月1日创建的"MM/dd/yy"模式和SimpleDateFormat实例,字符串"01/11/12"将被解释为2012年1月11日,而字符串"05/04/64"将被解释为1964年5月4日.
该方法SimpleDateFormat.set2DigitYearStart(Date)可用于修复年份.
Ell*_*sch 15
如果我理解你的问题,那么是的,
SimpleDateFormat sdf = new SimpleDateFormat("yy/MM/dd", Locale.US);
Calendar cal = Calendar.getInstance(Locale.US);
cal.set(1900, 0, 1);
sdf.set2DigitYearStart(cal.getTime());
System.out.println(sdf.parse("16/07/23"));
Run Code Online (Sandbox Code Playgroud)
根据SimpleDateFormat.set2DigitYearStart(Date)javadoc,
设置100年期间2位数年份将被解释为在用户指定的日期开始.