【问题标题】:String to date issues字符串迄今为止的问题
【发布时间】:2015-08-13 14:17:50
【问题描述】:

我遇到了一个问题,我可以将我的字符串更改为日期,但我无法检索数据,因为它位于 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 表格上检查他的星座是什么。我需要将输入转换为日期,还是我的头撞到了墙上?

【问题讨论】:

  • 在尝试块之前移动这个声明:Date date = formatter.parse(input);
  • @sunrise76 将整行移出 try 块会破坏目的。
  • 对不起。我的意图是声明日期(声明 => 仅变量定义)

标签: java string date


【解决方案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();
}

【讨论】:

    【解决方案2】:

    在 try-catch-block 外声明 date 并将其填充到块内。之后,数据将在变量中或不在变量中,具体取决于尝试是否失败以及在什么时候失败。这意味着您必须准备好它没有被填充并检查 null 等。

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

    【讨论】:

      【解决方案3】:

      您可以像其他答案一样在 try 块之外声明 date;但是,由于您几乎肯定需要一个有效值才能继续进行,因此您可能也应该在 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();
      }
      

      【讨论】:

        猜你喜欢
        • 2011-04-18
        • 1970-01-01
        • 2021-05-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-08-18
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多