有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

使用SimpleDataFormat的java格式日期

我如何解析像“2012-08-22 11:55:38”这样的日期

至“8月8日”

我尝试了FormatReador=new SimpleDataFormat(“d MMM”)

但我得到了一个“不可接受的约会”例外

希望你能帮助我。谢谢


共 (3) 个答案

  1. # 1 楼答案

    你可以从一个字符串解析成一个Date。然后可以使用不同的模式将Date中的格式化为字符串。目前,考虑到您向我们展示的代码,您似乎试图用SimpleDateFormat解析值“2012-08-22 11:55:38”,期望模式“d MMM”,但它显然不符合。你应该有这样的东西:

    SimpleDateFormat inputFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss",
                                                        Locale.US);
    // TODO: Set the time zone appropriately
    Date date = inputFormat.parse(inputText);
    
    SimpleDateFormat outputFormat = new SimpleDateFormat("d MMM", targetLocale);
    // TODO: Set the time zone appropriately
    String outputText = outputFormat.format(date);
    

    请注意,如果您正在用Java进行大量的日期/时间工作,那么应该研究Joda Time,这是一个更好的日期/时间API

  2. # 2 楼答案

    从输入字符串解析日期时出现问题

    “2012-08-22 11:55:38”是“yyyy-MM-dd HH:MM:ss”格式,您应该首先使用它来解析输入字符串中的日期

    一旦你有了一个Date对象,你就可以用所需的格式设置日期

  3. # 3 楼答案

    这应该有用(如果我理解你的要求):

    String s = "2012-08-22 11:55:38";
    DateFormat fmt = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
    Date dt = fmt.parse(s);
    DateFormat output = new SimpleDateFormat("d 'of' MMMM", Locale.US);
    System.out.println(output.format(dt)); //prints 22 of August