如何使用joda时间将dd / mm / yyyy转换为scala中的yyyymmdd

时间:2018-04-16 15:27:34

标签: scala jodatime

如何将dd / mm / yyyy转换为 yyyymmdd 格式,还可以 通过在Scala中使用 joda time dd / m / yyyy yyyymmdd 格式。

正在使用此依赖

 "joda-time" % "joda-time" % "2.9.9",

2 个答案:

答案 0 :(得分:3)

This answer已经用Java回答了你的问题,但在这里它被翻译成Scala:

import org.joda.time.DateTime
import org.joda.time.format.{DateTimeFormat, DateTimeFormatter}

// define original date format
val originalFormat: DateTimeFormatter = DateTimeFormat.forPattern("dd/MM/yyyy")
val input: DateTime = originalFormat.parseDateTime("02/09/2017")

// define new format
val newFormat: DateTimeFormatter = DateTimeFormat.forPattern("yyyyMMdd")
val output: String = newFormat.print(input) // 20170902

此代码已经说明错过了您日期的前导0(即它会看到02/9/20172/9/2017同样的事情)。但它不会预测一年中缺少的部分,因此2/9/17将输出为00170902而不是20170902

作为我之前提及的答案,您可以使用java.time来做同样的事情:

import java.time.LocalDate
import java.time.format.DateTimeFormatter

val originalFormat = DateTimeFormatter.ofPattern("dd/MM/yyyy")
val input = LocalDate.parse("02/09/2017", originalFormat)
val newFormat = DateTimeFormatter.ofPattern("yyyyMMdd")
val output = input.format(newFormat)

答案 1 :(得分:-1)

import org.joda.time.DateTime
import org.joda.time.format._

val fmt = DateTimeFormat.forPattern("dd/mm/yyyy")
val dt = fmt.parseDateTime("02/02/2017")
val fmt2 = DateTimeFormat.forPattern("yyyymmdd")
fmt2.print(dt)