0

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

但是当我试图解析日期以形成日期格式时,我得到了错误。 错误形式 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());

我将不胜感激有关此错误的任何帮助。

谢谢, 席德

4

3 回答 3

0

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

于 2011-04-26T04:04:06.457 回答
0

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

于 2011-04-26T04:05:25.540 回答
0

这不是sdf未初始化的对象,这可能data是仍然为 null 的 String(尽管在看到之前的代码之前我们无法确定)。您尝试 parse date,但是从您发布的内容中,您只需要修改/放入它的值,OnClickListener直到点击才会被调用。

所以你基本上做的是:

  1. 声明字符串日期。
  2. 设置 onclicklistener。
  3. date在初始化之前使用字符串。

通过将默认值设置为日期或将解析也放入侦听器来修复它(无论您需要什么回答正确的逻辑)

于 2011-04-26T04:06:26.527 回答