【问题标题】:How to parse 'dd MMM yyyy'如何解析'dd MMM yyyy'
【发布时间】:2014-11-29 15:47:54
【问题描述】:

如何将日期fromat从“dd MMM yyyy”转换为“yyyy-MM-dd”?

我知道我必须使用SimpleDatFormat,但它不起作用,类似问题的任何解决方案也没有。

我想格式化一个日期“2015 年 12 月 18 日”,但我得到了这个

java.text.ParseException: Unparseable date: "18 Dec 2015"

这是我的代码:

public String parseDate(String d) {
    String result = null;
    Date dateObject = null;
    SimpleDateFormat dateFormatter = new SimpleDateFormat("dd MMM yyyy");
    try {
        dateObject = dateFormatter.parse(d);
        dateFormatter.applyPattern("yyyy-MM-dd");
        result = dateFormatter.format(dateObject);

    } catch (ParseException e) {
        System.out.println(e);
    }

    return result;

}

【问题讨论】:

  • 您的默认语言环境是什么?试试SimpleDateFormat dateFormatter = new SimpleDateFormat("dd MMM yyyy", Locale.US);
  • @SotiriosDelimanolis 我的日期字符串没有破折号
  • @ZouZou 我的语言环境是波兰
  • 仔细阅读您的例外情况。
  • @SotiriosDelimanolis 好的,我修正了一个错字。我确定将“2015 年 12 月 18 日”作为输入,我得到 java.text.ParseException: Unparseable date: "18 Dec 2015" 异常

标签: java date simpledateformat


【解决方案1】:

你试过了吗

SimpleDateFormat dateFormatter = new SimpleDateFormat("dd-MMM-yyyy");

而不是

SimpleDateFormat dateFormatter = new SimpleDateFormat("dd MMM yyyy");

(注意连字符,因为您的模式与您的输入不匹配)

也有帮助:使用@ZouZou 推荐的Locale.US

【讨论】:

  • Locale.US 似乎已修复它
【解决方案2】:

您将输入作为“2015 年 12 月 18 日”而不是“dd MMM yyyy”形式传递。尝试像 2015 年 12 月 18 日那样传递输入,它应该可以工作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-18
    • 1970-01-01
    • 1970-01-01
    • 2016-09-23
    相关资源
    最近更新 更多