问题描述
我有以下日期数据框,
end_dt_time
2020-10-12 04:00:00
2020-10-11 04:00:00
2020-10-10 04:00:00
2020-10-09 04:00:00
2020-10-08 04:00:00
在将这些日期转换为unix时间戳时,尾随的零不会出现,这给我在unix中的错误时间提供了帮助。
这就是我正在申请的:
df = df.withColumn('unix',F.unix_timestamp('en_dt_time'))
输出缺少最后3个零(000)
en_dt_time unix
2020-10-12 04:00:00 1602475200
2020-10-11 04:00:00 1602388800
2020-10-10 04:00:00 1602302400
2020-10-09 04:00:00 1602216000
2020-10-08 04:00:00 1602129600
2020-10-07 04:00:00 1602043200
所需的输出是
en_dt_time unix
2020-10-12 04:00:00 1602475200000
2020-10-11 04:00:00 1602388800000
2020-10-10 04:00:00 1602302400000
2020-10-09 04:00:00 1602216000000
2020-10-08 04:00:00 1602129600000
2020-10-07 04:00:00 1602043200000
在转换为unix时间戳时如何获得这种精度? 我能够通过将输出乘以1000来生成它
df = df.withColumn('unix',F.unix_timestamp('en_dt_time')*1000)
这是正确的方法吗?
解决方法
这是正确的行为。来自function's description:
使用默认时区和默认区域设置,将具有给定模式(默认为'yyyy-MM-dd HH:mm:ss')的时间字符串转换为Unix时间戳(以 seconds 为单位)
因此,如果您只想获取毫秒数,则只需将秒数转换为毫秒数即可。