我正在尝试将字符串类型的日期从csv文件转换为日期格式,然后将其转换为特定的预期日期格式。在这样做的同时,我第一次看到日期格式的改变正在改变年份值。
scala> df1.filter($"pt" === 2720).select("`date`").show()
+----------+
| date|
+----------+
|24/08/2019|
|30/12/2019|
+----------+
scala> df1.filter($"pt" === 2720).select(date_format(to_date($"`date`","dd/MM/yyyy"),"YYYY-MM-dd")).show()
+------------------------------------------------------+
|date_format(to_date(`date`, 'dd/MM/yyyy'), YYYY-MM-dd)|
+------------------------------------------------------+
| 2019-08-24|
| 2020-12-30|
+------------------------------------------------------+
如上图所示,两行数据分别为2019年8月24日和2019年12月30日,但在显式类型转换和日期格式更改后,分别为2019-08-24(正确)和2020-12-30(错误和意外)。
为什么会出现这个问题?如何最好地避免这个问题?
1条答案
按热度按时间vdzxcuhz1#
我通过在expected date format参数中将大写yyyy改为yyyy解决了这个问题。
所以
我现在在做什么
这是因为,根据这个java的simpledateformat,大写y被解析为week year,小写字母y被解析为year。
所以,现在,当我和小y一起跑年度比赛时,我得到了预期的结果: