【问题标题】:Parsing Java String to date迄今为止解析 Java 字符串
【发布时间】:2012-07-10 06:57:14
【问题描述】:

日志(2 个不同的日期):

START TIME BEFORE PARSE: 06/27/2012 09:00
START TIME AFTER PARSE : Thu Mar 06 09:00:00 EET 2014


START TIME BEFORE PARSE: 07/06/2012 09:00
START TIME AFTER PARSE : Thu Jun 07 09:00:00 EEST 2012

代码:

DateFormat sdf = new SimpleDateFormat("dd/MM/yyyy HH:mm");
            Date date = sdf.parse(time);
            System.out.println("TIME BEFORE PARSE: " + time);
            System.out.println("TIME AFTER PARSE : " + date);

为什么今年会搞砸?如何让它工作?

【问题讨论】:

  • @Nishant : 我在日志中打印超时
  • 它确实以哪种方式搞砸了年份?你有输出吗?

标签: java parsing date date-format


【解决方案1】:

因为你把月份和日期倒过来了:

              dd/MM/yyyy HH:mm
              06/27/2012 09:00

一年没有第 27 个月。

【讨论】:

  • 好的,但我想要的是dd/MM/yyyy HH:mm 格式,我可以像我尝试的那样以某种方式反转它吗?
【解决方案2】:

第一个示例中的月份是27,这在我知道的任何日历中都无效。 (您可能只是在输入或您选择的格式中弄错了日/月顺序。)

【讨论】:

  • 好的,但我想要的是dd/MM/yyyy HH:mm 格式,我可以像我尝试的那样以某种方式反转它吗?
【解决方案3】:

您使用模式 dd/MM/yyyy 来解析日期 06/27/2012。我怀疑27是一个月。适当的格式是 MM/dd/yyyy。

默认情况下,DateFormat 是宽松的,因此会将 27 视为有效月份:2 年 + 3 个月,因此您在 2 年后的 3 月结束。

【讨论】:

  • 好的,但是我想要的是dd/MM/yyyy HH:mm 格式,我可以像我尝试的那样以某种方式反转它吗?
  • 您的问题毫无意义:您有一个字符串,表示格式为 MM/dd/yyyy 的日期。就是这样,你别无选择。如果字符串没有适当的格式,请修复生成此字符串的代码,而不是解析它的代码。
【解决方案4】:
    String time = "06/27/2012 09:00";
    DateFormat sdf = new SimpleDateFormat("MM/dd/yyyy HH:mm");
    Date date = sdf.parse(time);
    System.out.println("TIME BEFORE PARSE: " + time);
    System.out.println("TIME AFTER PARSE : " + date);

在您的示例中,日期格式错误。你给了 "dd/MM/yyyy HH:mm" 这应该是 "MM/dd/yyyy HH:mm"

【讨论】:

    【解决方案5】:

    您使用了 模式 dd/MM/YYYY ,但 您输入的日期为 MM/dd/YYYY,导致您出现这种奇怪的行为..

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-04-18
      • 2018-11-02
      • 2021-05-17
      • 1970-01-01
      • 1970-01-01
      • 2017-08-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多