字符串到日期问题

时间:2015-08-13 14:17:50

标签: java string date

我遇到了一个问题,我可以将我的String更改为Date但我无法检索数据,因为它位于try / catch块中:

SimpleDateFormat formatter = new SimpleDateFormat("dd/MM");

try {
  Date date = formatter.parse(input);
  System.out.println(formatter.format(date));
} catch (ParseException e) {
  e.printStackTrace();
}

关于如何检索数据的任何想法?

附加信息:项目是让某人输入他的出生日期和月份,以便程序可以在Excel表格上查看他的星座是什么。我是否需要将输入转换为日期,还是我的头撞墙?

3 个答案:

答案 0 :(得分:1)

try/catch

之前宣布您的日期
SimpleDateFormat formatter = new SimpleDateFormat("dd/MM");
Date date = null;
try {
    date = formatter.parse(input);
    System.out.println(formatter.format(date));
} catch (ParseException e) {
    e.printStackTrace();
}

答案 1 :(得分:1)

在try-catch-block之外声明date并将其填充到块内。之后,数据将在变量中,或者不在变量中,具体取决于尝试是否以及在何时失败。这意味着你必须做好准备,不要填写它并检查是否等等。

Date date = null;
try {
  date = formatter.parse(input);
  System.out.println(formatter.format(date));
} catch (ParseException e) {
   e.printStackTrace();
}
if (date != null) { doSomething(date); }

答案 2 :(得分:0)

您可以在date块之外声明try,就像在其他答案中一样;但是,由于您几乎肯定需要有效值才能继续,因此您可能只需要在try块中包含用于处理它的代码。即:

SimpleDateFormat formatter = new SimpleDateFormat("dd/MM");

try {
    Date date = formatter.parse(input);
    System.out.println(formatter.format(date));
    // do whatever you need with date here...
} catch (ParseException e) {
    e.printStackTrace();
}