将纪元时间(以毫秒为单位)转换为时间戳到 UTC 错误

Posted

技术标签:

【中文标题】将纪元时间(以毫秒为单位)转换为时间戳到 UTC 错误【英文标题】:Converting epoch time in milliseconds to time stamp to UTC error 【发布时间】:2021-03-01 03:51:57 【问题描述】:

我目前正在尝试将以毫秒为单位的纪元格式存储的日期转换为时间戳

    .withColumn(
        "date_var",
        from_utc_timestamp(
            from_unixtime("timestamp_var" / 1000, "yyyy-MM-dd HH:mm:ss"), "PST"
        )

不幸的是,这是错误的:

---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-37-df435784865f> in <module>
     32         "date_var",
     33         from_utc_timestamp(
---> 34             from_unixtime("timestamp_var" / 1000, "yyyy-MM-dd HH:mm:ss"), "PST"
     35         ),
     36     )

TypeError: unsupported operand type(s) for /: 'str' and 'int'

我不确定我的语法有什么问题,但欢迎任何帮助!

谢谢!

【问题讨论】:

【参考方案1】:

您需要选择列并将其除以 1000。Pyspark 无法将字符串除以 1000。

import pyspark.sql.functions as F

df.withColumn(
        "date_var",
        F.from_utc_timestamp(
            F.from_unixtime(F.col("timestamp_var") / 1000,
                            "yyyy-MM-dd HH:mm:ss"),
            "PST"
        )

【讨论】:

以上是关于将纪元时间(以毫秒为单位)转换为时间戳到 UTC 错误的主要内容,如果未能解决你的问题,请参考以下文章

将纪元时间转换为时间戳颤动

以毫秒为单位获取以毫秒为单位的午夜纪元时间

将纪元转换为时间戳时获取不正确的日期

使用 c++ 将纪元毫秒转换为 UTC 日期和时间

将日期、时间和 UTC 偏移值转换为自 unix 纪元以来的毫秒数?

使用 Snowflake 将时间 PST/PDT 转换为时间戳