给出错误答案的java数据格式
我正在使用下面的代码格式化日期。但当我以错误的格式提供数据时,它会产生意想不到的结果
DateFormat inputFormat = new SimpleDateFormat("yyyy/MM/dd");
DateFormat outputFormat = new SimpleDateFormat("yyyy-MM-dd");`
String dateVal = "3/8/2016 12:00:00 AM";
try {
Date date = inputFormat.parse(dateVal);
String formattedVal = outputFormat.format(date);
System.out.println("formattedVal : "+formattedVal);
} catch (ParseException pe) {
throw pe;
}
在上述情况下,输出为-formattedVal:0009-02-05
它不是抛出解析异常,而是解析值并给我一个不正确的输出。有人能帮我理解这种反常的行为吗
# 1 楼答案
阅读SimpleDateFormat的文档:
# 2 楼答案
SimpleDateFormat
在内部使用Calendar
对象。{尝试将
SimpleDateFormat
日历实例设置为strict:您真的应该使用
java.time
类,如果Java8不是一个选项,那么应该使用JodaTime# 3 楼答案
日期解析器尽最大努力将给定字符串解析为日期
此处
3/8/2016
以年/月/日格式解析,因此:所以年份=3+5.5=8.5+0.667=9.17。这是2009年2月5日
# 4 楼答案