PySpark 到_timestamp 时区转换

问题描述 投票:0回答:1

根据 this,to_timestamp 将其转换为本地计算机的时区。

我的机器时区是UTC。

运行此命令时:

     select 
to_timestamp("2024-09-20 19-00-00+0530","yyyy-MM-dd HH-mm-ssZ") as ist_offset,
to_timestamp("2024-09-20 19-00-00IST","yyyy-MM-dd HH-mm-ssz") as ist_abbreviation

我得到这个输出:

ist_offset ist_缩写
2024-09-20 13:30:00.000 2024-09-20 17:00:00.000

对于

ist_offset
它生成了正确的时区,但对于
ist_abbreviation
它做了一些转换,但不确定是哪个时区以及为什么它给出不同的时区?

我也在网上查看了 pyspark 文档和不同的博客,但找不到任何东西。有人可以帮助我如何使用缩写作为时区进行时区转换,因为我被限制不能使用偏移量或正确的时区,如“亚洲/加尔各答”。

pyspark timezone to-timestamp
1个回答
0
投票

我觉得 IST 可能存在歧义,可能是印度标准时间 (UTC+5:30)、爱尔兰标准时间 (UTC+01:00) 或以色列标准时间 (UTC+02:00)

您需要添加偏移量或指定时区

具体来说也许是这样的 udf -

def parse_timestamp_with_ist(timestamp_str):
  if 'IST' in timestamp_str:
     dt = datetime.strptime(timestamp_str, "%Y-%m-%d %H-%M-%SIST")
     return dt - timedelta(hours=5, minutes=30)
  else:
     return datetime.strptime(timestamp_str, "%Y-%m-%d %H-%M-%S")

© www.soinside.com 2019 - 2024. All rights reserved.