Search code examples
javascalasimpledateformatiso8601

Parse datetime with ISO format in Scala


Which format I should use to parse a String date (using ISO 8601) in Scala?

2018-12-13T19:19:08.266120+00:00

I just try some patterns but no success. This code show me a near date as String, but when I try with a String above, with timezone info, I get error.

new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'.'SXXX").format(new Date())

Result:

2018-12-14T17:41:24.929-02:00

Error:

java.text.ParseException: Unparseable date: "2018-12-13T19:19:08.266120+00:00" at java.text.DateFormat.parse(DateFormat.java:366) ... 29 elided


Solution

  • The DateTimeFormatter class includes a number of predefined formats, including a few ISO formats. Here's one that appears to work for your example String.

    import java.time.LocalDateTime
    import java.time.format.DateTimeFormatter._
    
    val dts = "2018-12-13T19:19:08.266120+00:00"
    LocalDateTime.parse(dts, ISO_DATE_TIME)
    //res0: java.time.LocalDateTime = 2018-12-13T19:19:08.266120