如何将dd/mm/yyyy转换为yyyymmdd格式以及dd/m/yyyy 到 yyyymmdd 格式,方法是在 Scala 中使用 joda time。
我使用此依赖项
"joda-time" % "joda-time" % "2.9.9",
这个答案已经用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/2017
和2/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)
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)