Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to convert date format to UTC in Scala?

How to convert date format "2021-02-28 13:38:00.597+0000" to "Mon, Feb 28,2021 15:25:00 UTC" UTC format in Scala?

like image 460
ConfusedDeveloper Avatar asked Oct 22 '25 00:10

ConfusedDeveloper


1 Answers

If you are using an older Java version prior to Java 8, it's best to use the DateTimeFormat from joda-time. BTW, the +0000 zone offset is for UTC, so I could have omitted withZoneUTC(), but I still used it for the first date just to be safe:

  val oldDateString = "2021-02-28 13:38:00.597+0000"
  val OldFormat     = "yyyy-MM-dd HH:mm:ss.SSSZ"
  val NewFormat     = "EEE, MMM dd, yyyy HH:mm:ss z"

  val formatterOld = DateTimeFormat.forPattern(OldFormat)
  val formatterNew = DateTimeFormat.forPattern(NewFormat)

  val dt              = formatterOld.withZoneUTC().parseDateTime(oldDateString)
  val dateStringInUTC = formatterNew.withZoneUTC().print(dt)

  println(dt)              // 2021-02-28T13:38:00.597Z
  println(dateStringInUTC) // Sun, Feb 28, 2021 13:38:00 UTC

UPDATE: For Java 8 and newer, the java.time API is your friend. Similarly, withZoneSameInstant(ZoneOffset.UTC) was not really needed:

  val oldDateString = "2021-02-28 13:38:00.597+0000"
  val OldFormat     = "yyyy-MM-dd HH:mm:ss.SSSZZZ"
  val NewFormat     = "EEE, MMM dd, yyyy HH:mm:ss z"

  val formatterOld = DateTimeFormatter.ofPattern(OldFormat)
  val formatterNew = DateTimeFormatter.ofPattern(NewFormat)

  val zdt             = ZonedDateTime.parse(oldDateString, formatterOld)
  val dateStringInUTC = zdt.withZoneSameInstant(ZoneId.of("UTC")).format(formatterNew)

  println(zdt)             // 2021-02-28T13:38:00.597Z
  println(dateStringInUTC) // Sun, Feb 28, 2021 13:38:00 UTC

UPDATE: Switched to using ZoneId.of("UTC") instead of ZoneOffset.UTC because the latter does not get the String UTC printed at the end, even though ZoneOffset extends ZoneId, as @deHaar mentioned.

like image 136
Alin Gabriel Arhip Avatar answered Oct 24 '25 13:10

Alin Gabriel Arhip



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!