问题描述
我将时间数据作为格式(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|
+---------+------------+