【问题标题】:How to fetch date and time from String in Java?如何从 Java 中的 String 中获取日期和时间?
【发布时间】:2012-02-08 11:53:31
【问题描述】:

我得到了类似“Wed, 08 Feb 2012 09:06:41 +0000”的字符串。 我想获取 2012 年 2 月 8 日的“日期”和 09:06 的“时间”。

我怎样才能得到它?请帮帮我。

提前谢谢..:)

【问题讨论】:

标签: java android date time fetch


【解决方案1】:

试试这个,

SimpleDateFormat sdf = new SimpleDateFormat("EEE, d MMM yyyy HH:mm:ss");
try 
{
    Date date = (Date)sdf.parse("Wed, 08 Feb 2012 09:06:41 +0000");
    System.out.println(date);
    SimpleDateFormat day = new SimpleDateFormat("dd-MMM-yyyy");
    SimpleDateFormat time = new SimpleDateFormat("HH:mm");
    System.out.println(day.format(date));
    System.out.println(time.format(date));
} 
catch (ParseException e) 
{
    e.printStackTrace();
}

它肯定会起作用。

【讨论】:

    【解决方案2】:
    Date d = new SimpleDateFormat("EEE, d MMM yyyy HH:mm:ss Z").parse(yourString);
    

    【讨论】:

      【解决方案3】:

      您可以使用SimpleDateFormat。 SimpleDateFormat 是一个具体的类,用于以区域设置敏感的方式格式化和解析日期。它允许格式化(日期 -> 文本)、解析(文本 -> 日期)和规范化。

      你只需要一个正确的格式:

      "EEE, d MMM yyyy HH:mm:ss Z"
      

      【讨论】:

      • @Hardik:如果您省略 Z,那么解析器将忽略字符串中的时区并且不会产生准确的时间。您会看到“正确”的结果,但生成的日期对象与生成字符串的对象不同。我认为您需要更深入地了解时间是如何在 Java 中存储的。这是很好的article
      【解决方案4】:
      DateFormat formatter ; 
      Date date ; 
      formatter = new SimpleDateFormat("EEE, dd MMM yyy HH:mm:ss Z");
      date = (Date)formatter.parse(str_date);  
      

      查看此处http://docs.oracle.com/javase/1.4.2/docs/api/java/text/SimpleDateFormat.html 了解日期和时间模式。

      【讨论】:

        【解决方案5】:

        使用以下成语:

        DateFormat fmt = new SimpleDateFormat("E, dd MMM yyyy HH:mm:ss Z");
        Date date = (Date)fmt.parse("Wed, 08 Feb 2012 09:06:41 +0000");
        

        "E, dd MMM yyyy HH:mm:ss Z" 这是您的解析器的模式。

        “Wed, 08 Feb 2012 09:06:41 +0000”实际上是您的日期字符串。

        现在日期对象包含结构化日期,您可以提取所有需要的内容。

        【讨论】:

          【解决方案6】:

          您可以使用SimpleDateFormat

          要显示 2012 年 2 月 8 日,您可以将 SimpleDateFormat 设置为

          SimpleDateFormat  m_sdFormatter = new SimpleDateFormat("dd-MMM-yyyy");  
          m_sdFormatter.format(your date);
          

          显示“时间”09:06。你可以 SimpleDateFormat 为

          SimpleDateFormat  m_sdFormatter = new SimpleDateFormat("HH:mm");  
          m_sdFormatter.format(your date);
          

          【讨论】:

            【解决方案7】:

            先把字符串解析成Date,然后把日期格式化成你需要的字符串:

                SimpleDateFormat sdf = new SimpleDateFormat("EEE, d MMM yyyy HH:mm:ss Z");
                try {
                    Date date = (Date)sdf.parse("Wed, 08 Feb 2012 09:06:41 +0000");
                    System.out.println(date);
                    SimpleDateFormat day = new SimpleDateFormat("dd-MMM-yyyy");
                    SimpleDateFormat time = new SimpleDateFormat("HH:mm");
                    System.out.println(day.format(date));
                    System.out.println(time.format(date));
                } catch (ParseException e) {
                    e.printStackTrace();
                }
            

            输出:

            Wed Feb 08 09:06:41 GMT 2012
            8-Feb-2012
            09:06
            

            【讨论】:

            • 我得到了日期。但是,它给了时间 14:36..??
            • @Hardik:没错。源字符串显示“+0000”时区。解析的日期将显示在您当地的时区(如.toString() 调用)。但实际上是同一时间。
            猜你喜欢
            • 2023-03-22
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2010-11-21
            相关资源
            最近更新 更多