Scala日期格式

时间:2018-08-29 14:11:04

标签: scala apache-spark hadoop apache-spark-sql

我有一个data_date,其格式为yyyymmdd:

beginDate = Some(LocalDate.of(startYearMonthDay(0), startYearMonthDay(1), 
startYearMonthDay(2)))
var Date = beginDate.get
.......

val data_date = Date.toString().replace("-", "")

这将给我结果'20180202' 但是,对于我的用例,我需要结果为201802(yyyymm)。我不想更改beginDate的值,我只想更改data_date值以适合我的用例,我该怎么做?我可以使用拆分功能吗? 谢谢!

3 个答案:

答案 0 :(得分:1)

从代码片段中尚不清楚您使用的是Spark,但是标签暗示了这一点,因此我将使用Spark内置函数给出答案。假设您的DataFrame被称为df,且日期列为my_date_column。然后,您只需使用date_format

scala> import org.apache.spark.sql.functions.date_format
import org.apache.spark.sql.functions.date_format

scala> df.withColumn("my_new_date_column", date_format($"my_date_column", "YYYYMM")).
     | select($"my_new_date_column").limit(1).show

// for example:
+------------------+
|my_new_date_column|
+------------------+
|            201808|
+------------------+

答案 1 :(得分:0)

您可以仅采用结果字符串的前6个字符来执行此操作。 即

val s = "20180202"
s.substring(0, 6) // returns "201802"

答案 2 :(得分:0)

使用DateTimeFormatter的方式。

val formatter = DateTimeFormatter.ofPattern("YMM")
val data_date = Date.format(foramatter)

我建议您通读DateTimeFormatter文档,以便按所需的方式设置日期格式。