【问题标题】:how to parse this date in java如何在java中解析这个日期
【发布时间】:2012-08-05 10:23:09
【问题描述】:

请告诉我如何解析这个日期:“29-July-2012”

我试试:

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

但它不起作用。我得到以下异常:

java.text.ParseException: Unparseable date: "29-July-2012"

【问题讨论】:

标签: java parsing date


【解决方案1】:

您还需要提及语言环境...

Date date = new SimpleDateFormat("dd-MMMM-yyyy", Locale.ENGLISH).parse(string);

【讨论】:

    【解决方案2】:

    在您的字符串中,完整格式用于月份,因此根据http://docs.oracle.com/javase/6/docs/api/java/text/SimpleDateFormat.html,您应该按照 Baz 的评论中的建议使用 MMMM。

    可以从 API 文档中了解原因。 http://docs.oracle.com/javase/6/docs/api/java/text/SimpleDateFormat.html#month 表示,对于月份,如果超过 3 个字符,它将被解释为文本,并且 http://docs.oracle.com/javase/6/docs/api/java/text/SimpleDateFormat.html#text 声明完整的形式(在您的情况下是 'July' 而不是 'Jul')将用于 4 个或更多字符。

    【讨论】:

      【解决方案3】:

      试试这个(添加 Locale.ENGLISH 参数和月份的长格式)

      package net.orique.stackoverflow.question11815659;
      
      import java.text.ParseException;
      import java.text.SimpleDateFormat;
      import java.util.Locale;
      
      public class Question11815659 {
      
          public static void main(String[] args) {
      
              try {
                  SimpleDateFormat sdf = new SimpleDateFormat("dd-MMMM-yyyy",
                          Locale.ENGLISH);
                  System.out.println(sdf.parse("29-July-2012"));
              } catch (ParseException e) {
                  // TODO Auto-generated catch block
                  e.printStackTrace();
              }
      
          }
      
      }
      

      【讨论】:

        【解决方案4】:

        使用split() 函数和分隔符 "-"

        String s = "29-July-2012";
        
        String[] arr = s.split("-");
        
        int day = Integer.parseInt(arr[0]);
        String month = arr[1];
        int year = Integer.parseInt(arr[2]);
        
        // Now do whatever u want with the day, month an year values....
        

        【讨论】:

        • 哦,抱歉打错字了...感谢您的追踪...谢谢
        • 这也好不了多少。仔细看看;)
        • 我学到的教训......永远不要尝试在stackoverflow中发帖......在做正式工作时......
        【解决方案5】:

        创建一个 StringTokenizer。您首先需要导入库:

        import Java.util.StringTokenizer;
        

        基本上,您需要创建一个分隔符,它基本上是用来分隔文本的。在这种情况下,分隔符是“-”(破折号/减号)。

        注意:既然你用引号显示了文本并说解析,我假设它是一个字符串。

        例子:

        //Create string
        String input = "29-July-2012";
        
        //Create string tokenizer with specified delimeter
        StringTokenizer st = new StringTokenizer(input, "-");
        
        //Pull data in order from string using the tokenizer
        String day = st.nextToken();
        String month = st.nextToken();
        String year = st.nextToken();
        
        //Convert to int
        int d = Integer.parseInt(day);
        int m = Integer.parseInt(month);
        int y = Integer.parseInt(year);
        
        //Continue program execution
        

        【讨论】:

        • lmao,我的错,我会使用将月份存储为字符串的枚举和将其转换为数字的方法。我写得很快,但你明白了。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-10-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多