【问题标题】:Oracle date to Java dateOracle 日期到 Java 日期
【发布时间】:2011-11-02 12:25:07
【问题描述】:

什么 SimpleDateFormat 用于解析 Oracle 日期?

我正在使用这个 SimpleDateFormat。

SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy/mm/dd hh:mm:ss.sss");

它给出了这个例外。

java.text.ParseException:无法解析的日期:“2011-08-19 06:11:03.0”

请告诉我要使用的 SimpleDateFormat。谢谢。

【问题讨论】:

  • 您是否尝试过在格式中使用破折号(-)而不是斜杠(/)?
  • 如果这来自DATE 字段,则不要将其作为字符串获取并对其进行解析。
  • 仅供参考,麻烦的旧日期时间类,如 java.util.Datejava.util.Calendarjava.text.SimpleDateFormat 现在是 legacy,被 Java 8 和 Java 中内置的 java.time 类所取代9. 见Tutorial by Oracle

标签: java oracle date


【解决方案1】:

您应该使用此模式 "yyyy-MM-dd HH:mm:ss.S" 而不是 "yyyy/mm/dd hh:mm:ss.sss"

h 用于“上午/下午 (1-12) 中的时间”,H 用于“一天中的时间 (0-23)”
看这里:SimpleDateFormat

SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.S");
Date date = dateFormat.parse("2011-08-19 06:11:03.0");

【讨论】:

    【解决方案2】:

    tl;博士

    LocalDateTime.parse( 
        "2011-08-19 06:11:03.0".replace( " " , "T" ) 
    ) 
    

    详情

    您的输入字符串与您的格式化模式不匹配。您的模式有斜线字符,而您的数据有连字符。

    java.time

    此外,您正在使用糟糕的旧日期时间类,这些类现在已被java.time 类所取代。

    您的输入字符串几乎符合日期时间格式的 ISO 8601 标准。将中间的空格替换为T

    String input = "2011-08-19 06:11:03.0".replace( " " , "T" ) ;
    

    您的输入缺少任何时区指示或与 UTC 的偏移量。所以我们解析为LocalDateTime,用于缺少任何区域/偏移概念的对象。

    LocalDateTime ldt = LocalDateTime.parse( input ) ;
    

    要生成标准格式的字符串,请调用toString

    String output = ldt.toString() ;
    

    如果此输入用于特定时区,请分配它。

    ZoneId z = ZoneId.of( "Africa/Tunis" ) ;
    ZonedDateTime zdt = ldt.atZone( z ) ;
    

    关于java.time

    java.time 框架内置于 Java 8 及更高版本中。这些类取代了麻烦的旧 legacy 日期时间类,例如 java.util.DateCalendarSimpleDateFormat

    Joda-Time 项目现在位于maintenance mode,建议迁移到java.time 类。

    要了解更多信息,请参阅Oracle Tutorial。并在 Stack Overflow 上搜索许多示例和解释。规格为JSR 310

    使用符合JDBC 4.2 或更高版本的JDBC driver,您可以直接与您的数据库交换java.time 对象。不需要字符串或 java.sql.* 类。

    从哪里获得 java.time 类?

    ThreeTen-Extra 项目通过附加类扩展了 java.time。该项目是未来可能添加到 java.time 的试验场。您可以在这里找到一些有用的类,例如IntervalYearWeekYearQuartermore

    【讨论】:

      猜你喜欢
      • 2023-03-20
      • 1970-01-01
      • 2016-08-08
      • 2012-06-07
      • 2012-09-10
      • 1970-01-01
      • 1970-01-01
      • 2017-04-25
      相关资源
      最近更新 更多