首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在pyspark中将filetime转换为localtime

在pyspark中将filetime转换为localtime
EN

Stack Overflow用户
提问于 2021-01-26 04:11:07
回答 1查看 24关注 0票数 0

我有一个拼图文件,其中包含一个列,如下所示

代码语言:javascript
复制
+--------------------+
|     Start_Time     |
+--------------------+
| 131696565231590000 |
| 131696565251590000 |
| 131726072567140000 |
| 131726073867090000 |
| 131726076586810000 |
| 131726079656940000 |
| 131726081667130000 |
| 131726085077090000 |
| 131726085207190000 |
+--------------------+

我需要读取此文件,并将此列转换为localtime的日期时间列。预期输出如下(我的本地时间是IST):

代码语言:javascript
复制
+-------------------------+
|       Start_Time        |
+-------------------------+
| 2018-05-01 13:55:23.160 |
| 2018-05-01 13:55:25.160 |
| 2018-06-04 17:34:16.713 |
| 2018-06-04 17:36:26.710 |
| 2018-06-04 17:40:58.680 |
| 2018-06-04 17:46:05.693 |
| 2018-06-04 17:49:26.713 |
| 2018-06-04 17:55:07.710 |
| 2018-06-04 17:55:20.720 |
+-------------------------+

我尝试按如下所示逐个转换时间戳,并将+5.30添加到其中,但在读取拼图文件本身或之后,是否有更好的解决方案可以使用?

代码语言:javascript
复制
datetime.fromtimestamp((131696565231590000 - 116444736000000000) // 10000000)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-01-26 04:26:20

您可以使用from_utc_timestamp并指定IST时区:

代码语言:javascript
复制
df2 = df.selectExpr("""
    from_utc_timestamp(
        timestamp((Start_Time - 116444736000000000) / 10000000), 'IST'
    ) as Start_Time
""")

df2.show(truncate=False)
+-----------------------+
|Start_Time             |
+-----------------------+
|2018-05-01 19:25:23.159|
|2018-05-01 19:25:25.159|
|2018-06-04 23:04:16.714|
|2018-06-04 23:06:26.709|
|2018-06-04 23:10:58.681|
|2018-06-04 23:16:05.694|
|2018-06-04 23:19:26.713|
|2018-06-04 23:25:07.709|
|2018-06-04 23:25:20.719|
+-----------------------+
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65891751

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档