簡體   English   中英

如何將日期轉換為極地中的時區感知日期時間

[英]How to convert Date to timezone aware datetime in polars

假設我有

df = pl.DataFrame({
    "date": pl.Series(["2022-01-01", "2022-01-02"]).str.strptime(pl.Date), "%Y-%m-%d")
})

如何將其本地化到特定時區並使其成為日期時間?

我試過:

df.select(pl.col('date').cast(pl.Datetime(time_zone='America/New_York')))

但這給了我

    shape: (2, 1)
    date
    datetime[μs, America/New_York]
    2021-12-31 19:00:00 EST
    2022-01-01 19:00:00 EST

所以看起來它是從假設天真的日期時間是 UTC 然后應用轉換開始的。 我設置了os.environ['TZ']='America/New_York'但我得到了相同的結果。

我查看了 API 指南中的 polars 配置選項,看看是否還有其他要設置的內容,但找不到有關默認時區的任何信息。

在當前可用的 polars 版本中,這有點乏味。 Polars 日期時間存儲為“UTC”時間戳,因此我們必須進行一些時區處理以使它們與紐約時間一致。

df.select(
    pl.col('date').cast(pl.Datetime)
    .dt.with_time_zone("America/New_York")
    .dt.cast_time_zone("UTC")
    .dt.with_time_zone("America/New_York")
)
shape: (2, 1)
┌────────────────────────────────┐
│ date                           │
│ ---                            │
│ datetime[μs, America/New_York] │
╞════════════════════════════════╡
│ 2022-01-01 00:00:00 EST        │
├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤
│ 2022-01-02 00:00:00 EST        │
└────────────────────────────────┘

這顯然不是很好,所以在下周發布的 polars 0.14.24中,我們可以使用tz_localize表達式。

df.select(
    pl.col('date').cast(pl.Datetime).dt.tz_localize("America/New_York")
)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM