在scala中将时间字符串转换为时间戳/日期时间

问题描述

我将时间数据作为格式(HHMMSSHS)的csv文件接收到我的源中。我不确定格式中的HS代表什么。示例数据将类似于15110708。

我正在databricks表中创建包含接收到的列和数据的表。我想在斯卡拉处理时将此字段转换为时间。 我正在使用UDF对移动中的任何数据进行格式化。但是为此,我在编写仅用于解析时间的UDF时完全陷入困境。

最终输出应为15:11:07:08或适合此字符串的任何时间格式。

我尝试使用java.text.SimpleDateFormat并遇到无法解析的字符串的问题。

是否可以将上述给定的字符串转换为时间格式?

我将此值作为列存储在databricks笔记本表中。除了字符串以外,是否还有其他格式只能保存时间值?

解决方法

您尝试过吗?:

import java.time.LocalTime

val dtf : DateTimeFormatter = DateTimeFormatter.ofPattern("HHmmssSS")
  
val localTime = udf { str : String =>
  LocalTime.parse(str,dtf).toString
}

给出:

+---------+------------+
|Timestamp|converted   |
+---------+------------+
|15110708 |15:11:07.080|
|15110708 |15:11:07.080|
+---------+------------+