2015-09-27 82 views
-1

下面的代码是迄今为止我所得到的最好的代码。 .setTime()方法抛出异常。有没有更好的方法来做到这一点或纠正这一点?如何将日期字符串解析为java的Joda DateTime对象?

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()); 
    } 
+1

NPE警报! :)用'Calendar.getInstance()'初始化你的日历。 – Tunaki

+0

@rdm很高兴看到你想参与StackOverflow。发帖前请先搜索。本网站旨在成为一个权威性问答库,而不是一个开放式讨论组。 –

+0

你说在标题中你需要“将日期字符串解析成Joda DateTime”,但是在对两个答案的评论中,你都说过“需要一个日历对象”。当你*甚至不知道你想要什么时,我们无法提供帮助。 – Andreas

回答

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被抛出的确切行。

0

您已经创建了DateTimeFormatter您的需求,所以才使用它:

DateTimeFormatter formater = DateTimeFormat.forPattern("MM/dd/yyyy"); 
DateTime startDateTime = formater.parseDateTime("09/10/2015"); 
DateTime endDateTime = formater.parseDateTime("09/20/2015"); 

无需一个SimpleDateFormatCalendar

注意:我修正了为Joda创建DateTimeFormatter,因为您正在使用Java 8方式。

+0

我需要的最终结果是另一种方法的日历对象 – rdm

+0

您的第一行还会给我带来错误,提示DateTimeFormat被更改为DateTimeFormatter。这是为什么? – rdm

+0

因为你实际上没有安装Joda? – Andreas

相关问题