Simple Date Formatter解析函数错误

时间:2011-04-26 03:36:51

标签: android simpledateformat

当我使用SimpleDateFormatter.parse()函数时出现错误。我让用户分别通过DatePicker和TimePicker输入日期和时间,我从两个选择器收集信息并尝试创建一个Date对象,我可以将它与另一个日期对象(系统日期)进行比较。

但是当我试图解析日期以形成日期格式时,我收到错误。 Error form Logcat

导致错误的代码块是

 btn.setOnClickListener(new OnClickListener() {

        public void onClick(View v) {
         int day =  dpicker.getDayOfMonth();
         int month = dpicker.getMonth() + 1;

         if (month < 10)
         {
             monthS = "0" + month;
         }
         else
         {
             monthS = String.valueOf(month);
         }
         int year = dpicker.getYear();

         int minutes = tpicker.getCurrentMinute();
         int hours = tpicker.getCurrentHour();
         if (hours < 10)
         {
             hoursS = "0" + hours;
         }
         else
         {
             hoursS = String.valueOf(hours);
         }


          date = year + "-" + monthS + "-" + day + " " + hoursS + ":" +  minutes  ; 

         tview.setText("Date and Time are" + date) ;


        }
    });

   SimpleDateFormat sdf =   new SimpleDateFormat("yyyy-MM-dd hh:MM");

   try {
     newDate = sdf.parse(date);

} catch (java.text.ParseException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}
tview2.setText(newDate.toString());

感谢您对此错误提供任何帮助。

谢谢, SID

3 个答案:

答案 0 :(得分:0)

您在onClick侦听器之外解析date,因此,可能在此时变量date未初始化。我认为你应该在监听器中移动try / catch循环。

答案 1 :(得分:0)

问题是date为空。在按下按钮之前,onClickListener中的代码将不会执行。

答案 2 :(得分:0)

这不是未初始化的sdf对象,这可能是data仍为空的字符串(尽管我们在看到之前的代码之前无法确定)。您尝试解析date,但是根据您发布的内容,您只需在OnClickListener中修改/设置值,直到点击后才会调用该值。

所以你基本上做的是:

  1. 声明字符串日期。
  2. 设置onclicklistener。
  3. 在初始化之前使用字符串date
  4. 通过将默认值设置为date来修复它,或者将解析也放在监听器中(无论答案是什么,你需要正确的逻辑)