【问题标题】:convert String "30-MAR-07" to date object将字符串“30-MAR-07”转换为日期对象
【发布时间】:2012-07-17 17:10:49
【问题描述】:
SimpleDateFormat formatter = new SimpleDateFormat("mm/dd/yyyy");
dt = formatter.parse(temp[0]);

给我错误

java.text.ParseException:无法解析的日期:“30-MAR-07”

有什么方法可以将给定的 String 格式化为 Date 对象,而无需编写自己的字符串拆分和将数字转换为月份的方法?谢谢

【问题讨论】:

  • 您希望“30-MAR-07”以何种方式匹配“mm/dd/yyyy”格式?
  • 为什么不阅读 SDF 的 javadocs 然后问?

标签: java date simpledateformat


【解决方案1】:

使用正确的格式,如下,

SimpleDateFormat formatter = new SimpleDateFormat("dd-MMM-yy");

【讨论】:

    【解决方案2】:

    您的 SimpleDateFormat 模式对于“30-MAR-07”完全不正确。它的值顺序错误,使用了错误的分隔符和错误的月份格式。你想要:

    SimpleDateFormat formatter = new SimpleDateFormat("dd-MMM-yy");
    

    您可能还想指定语言环境,例如

    SimpleDateFormat formatter = new SimpleDateFormat("dd-MMM-yy", Locale.US);
    

    我已经检查过它是否有效 - 至少在我的机器上 :)

    【讨论】:

      【解决方案3】:

      试试这个...(new SimpleDateFormat("dd-MMM-yy")

      System.out.println(new SimpleDateFormat("dd-MMM-yy").format(new Date("30-MAR-07")));
      

      【讨论】:

      • 乔恩它不会将日期 30-Mar-07 int 转换为具有 dd-MM-yy 格式的日期对象..当我这样做时,我得到了输出,抱歉,如果我遗漏了什么
      • 您正在调用Date 构造函数,然后使用SimpleDateFormatter 格式化结果。根据问题,OP 希望使用 SimpleDateFormatter 解析文本。
      • 哦,我明白你的意思是这样的......好吧,我只是这样做了,所以他可以打印一次,看看它是否有效......对不起,如果这看起来相反......
      • 嗯,特别是,您依赖于愿意处理该格式的 Date(String) 构造函数,这对我来说似乎是一个可疑的假设。
      • 好的..这似乎是一个很好的信息......谢谢我会记住这一点。
      猜你喜欢
      • 2020-05-21
      • 2020-11-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-07
      • 2012-01-28
      • 1970-01-01
      相关资源
      最近更新 更多