【问题标题】:Java change date format from custom date to MM dd yyyyJava将日期格式从自定义日期更改为MM dd yyyy
【发布时间】:2012-04-25 02:51:29
【问题描述】:

我正在尝试将存储在数据库中的字符串值(例如“2012-01-20”)转换为 2012 年 1 月 20 日的格式。

我看过一些示例,但它们使用的是 Date,它与 SimpleDateFormat 一起使用。

作为一个例子,这是我尝试过的一种方法,但“尝试”总是失败,结果为空

DateFormat df = new SimpleDateFormat("MM/dd/yyyy");
Date convertedDate=null;

try {

    convertedDate = df.parse(datePlayed);                   

} catch(ParseException e){
    e.printStackTrace();
}   

【问题讨论】:

  • 如果您的日期看起来像2012-01-20,为什么要在创建SimpleDateFormat 时使用MM/dd/yyyy 格式?
  • @JamesMontagne 我自己说得再好不过了。
  • @JamesMontagne 那不是我实际使用的,这只是我发现的一种方法的原始示例,你的权利,我想要显示月份,MMMM。

标签: java date parsing formatting


【解决方案1】:

简而言之,您没有使用正确的解析格式。您需要使用 两个 DateFormat 实例;一个用于解析,一个用于格式化。

DateFormat parser = new SimpleDateFormat("yyyy-MM-dd");
DateFormat formatter = new SimpleDateFormat("MMM dd, yyyy");
Date convertedDate = parser.parse(datePlayed);
String output = formatter.format(convertedDate);

【讨论】:

  • 成功了!现在我意识到我必须首先设置解析器以识别我的模式。非常感谢您的快速响应
  • 我们可以去掉第二行,用第四行的解析器来代替格式化器作为解析器来提高效率吧?
【解决方案2】:
Date da = new Date();
SimpleDateFormat ft = new SimpleDateFormat("E, dd/MM/yyyy !");
System.out.println("Update : " + ft.format(da));

您可以更改您想要的日期样式:E, dd/MM/yyyy !

祝你好运!

【讨论】:

    【解决方案3】:

    如果从数据库中读取日期,则将其存储为 java.sql.Date。然后您可以在其上使用 SimpleDateFormat,也许在转换为 java.util.Date 之后。从 ResultSet 对象中,您可以提取日期。

    如果您的意思是给您一个文本中的日期,该日期是由其他人从数据库中提取的,而您却被它所困扰。尝试使用:

     DateFormat df = new SimpleDateFormat("yyyy-MM-dd");  
     df.setLenient(true);  
     convertedDate = df.parse(datePlayed.trim() );
    

    还可以尝试在解析之前显示您正在解析的文本,以确保 datePlayed 值符合您的预期。 使用parseInt,数据前后的多余空格会导致错误,因此调用trim()会删除多余的空格。

    【讨论】:

    • 这些都不是问题。
    • 由于我们没有看到他的实际输入,我们不确定问题是什么。您和我为问题的最可能原因提供了解决方案。
    • 仅供参考,java.sql.Datejava.util.Date 的子类。无需转换。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-29
    • 2019-09-09
    • 2021-01-28
    相关资源
    最近更新 更多