以下代码是我迄今为止提出的最佳代码。 .setTime()方法抛出异常。有没有更好的方法来做到这一点或纠正这个?
String format = "MM/dd/yyyy";
DateTime test = new DateTime();
DateTimeFormatter dateFormat = DateTimeFormatter.ofPattern("MM/dd/yyyy");
SimpleDateFormat formater = new SimpleDateFormat(format);
String startDateString = "09/10/2015";
String endDateString = "09/20/2015";
Date startDate = null;
Date endDate = null;
Calendar sampleDateStart = null;
Calendar sampleDateEnd = null;
try{
startDate = formater.parse(startDateString);
endDate = formater.parse(endDateString);
sampleDateStart.setTime(startDate);
sampleDateEnd.setTime(endDate);
}catch(Exception e){
System.out.println(e.getMessage());
}
答案 0 :(得分:0)
如果你修复了Calendar
变量的初始化,似乎很好:
Calendar sampleDateStart = Calendar.getInstance();
Calendar sampleDateEnd = Calendar.getInstance();
如果您按照建议使用了正确的异常类型,问题会更加明显,
而不是通用Exception
,
并打印堆栈跟踪而不是e.getMessage()
:
try {
startDate = formater.parse(startDateString);
endDate = formater.parse(endDateString);
sampleDateStart.setTime(startDate);
sampleDateEnd.setTime(endDate);
} catch (ParseException e) {
e.printStackTrace();
}
堆栈跟踪会告诉你投掷NullPointerException
的确切行。
答案 1 :(得分:0)
您已经创建了所需的DateTimeFormatter
,所以只需使用它:
DateTimeFormatter formater = DateTimeFormat.forPattern("MM/dd/yyyy");
DateTime startDateTime = formater.parseDateTime("09/10/2015");
DateTime endDateTime = formater.parseDateTime("09/20/2015");
无需SimpleDateFormat
或Calendar
。
注意:我已将DateTimeFormatter
的创建修复为Joda,因为您使用的是Java 8方式。