scala日期格式

xiozqbni  于 2021-05-29  发布在  Hadoop
关注(0)|答案(3)|浏览(419)

我有一个数据日期,格式为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\u date值以适合我的用例,我该怎么做?我可以使用拆分函数吗?谢谢!

7xllpg7q

7xllpg7q1#

使用datetimeformatter的方法。

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

我建议你通读一遍 DateTimeFormatter 文档,这样您就可以按您想要的方式格式化日期。

41zrol4v

41zrol4v2#

从代码片段中不清楚您使用的是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|
+------------------+

uurity8g

uurity8g3#

您可以通过只获取结果字符串的前6个字符来实现这一点。即

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

相关问题