【问题标题】:Parsing a java Date back from toString() [duplicate]从 toString() 解析 java 日期 [重复]
【发布时间】:2012-06-29 16:30:59
【问题描述】:

我有一个 String,其中包含在 java.util.Date 的实例上调用的 toString() 的结果。如何将此值解析回 Date 对象?

Java 文档说 toString() 将此 Date 对象转换为以下形式的 String

 dow mon dd hh:mm:ss zzz yyyy

当然没有"dow""mon"这样的格式标签。

有人可以帮我解决这个问题吗?请注意,不幸的是,toString() 调用在我无法控制的一段代码中。

【问题讨论】:

    标签: java parsing date


    【解决方案1】:

    如果您无法控制生成字符串的代码:

    要解析toString() 格式,您需要将SimpleDateFormat 语言环境设置为英语并使用格式:"EEE MMM dd HH:mm:ss Z yyyy"

    SimpleDateFormat sdf = new SimpleDateFormat("EEE MMM dd HH:mm:ss Z yyyy", new Locale("us"));`
    

    【讨论】:

    • 嗯..正如我所说,我无法控制 toString(),因为它是由 Struts 制作的。无论如何,设置 EN 语言环境可以解决问题,所以谢谢。我只需要注意正确的格式字符串是“EEE MMM dd HH:mm:ss zzz yyyy”,你忘记了月份。
    • 我编辑了答案以获得它。 :)
    【解决方案2】:

    使用简单日期格式。在这里找到文献: http://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html

    【讨论】:

      【解决方案3】:

      假设你得到 String of "dateString" ;

      SimpleDateFormat sdf = new SimpleDateFormat("dow mon dd hh:mm:ss zzz yyyy");
      
      Date date = sdf.parse("dateString");
      

      【讨论】:

      • 这不起作用并导致抛出异常。正确的构造函数调用是:SimpleDateFormat sdf = new SimpleDateFormat("EEE MMM dd HH:mm:ss Z yyyy", new Locale("us"));
      【解决方案4】:

      首先看一下javaDate Formats提供的所有日期格式。 你可以使用SimpleDateFormat 类做你想做的事。

       public class DateFormatTest 
          { 
            public DateFormatTest() 
            { 
              String dateString = // in "dow mon dd hh:mm:ss zzz yyyy" format
      
              SimpleDateFormat dateFormat = new SimpleDateFormat("dow mon dd hh:mm:ss zzz yyyy"); 
              Date convertedDate = dateFormat.parse(dateString); 
      
              System.out.println("Converted string to date : " + convertedDate); 
            } 
      
            public static void main(String[] argv) 
            { 
              new DateFormatTest(); 
            } 
          } 
        }
      

      【讨论】:

      • "dow" 和 "mon" 不是有效的格式规范
      【解决方案5】:

      我没有测试,但这样的东西可能会起作用:

      SimpleDateFormat sdf = new SimpleDateFormat("EEE MMM HH:mm:ss z yyyy");
      Date date = sdf.parse(dateStr);
      

      如果没有,请尝试使用文档进行更正: http://docs.oracle.com/javase/6/docs/api/java/util/Date.html#toString() http://docs.oracle.com/javase/6/docs/api/java/text/SimpleDateFormat.html

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2023-04-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-06-22
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多