我正在努力理解在 Python 的 DateTime 上使用vs.的含義。.utcnow.now
這就是我困惑的原因:我住在法國。現在,我們在 UTC 時區(冬季(現在)的 CET 時區/夏季的 CEST ( 2) 時區)有 1 小時。
如果我采用以下值:
dt = datetime.datetime.utcnow()
dt.strftime('%c') # Thu Dec 9 16:17:38 2021
int(dt.timestamp()) # 1639063064
這是正確的,因為現在在法國,17 點 17 分。因此,根據我的理解,該時間戳記1639063064是自 EPOCH 以來時間的 UTC 表示。
但是如果我在網站Epoch Converter 中測驗這個值,我得到
- 格林威治標準時間:2021 年 12 月 9 日星期四 15:17:44
- 您所在的時區:jeudi 2021 年 12 月 9 日 16:17:44 GMT 01:00
似乎該網站也將我的時區減去已經“減去”的值,最終洗掉兩倍的時區并導致無效值。
實際的困惑是,當我嘗試在我的前端應用程式上將該 UTC 時間戳匯入 Luxon 時,執行以下操作不起作用:
DateTime.fromMillis(parseInt(ts), { zone: 'utc' }).toLocal().setLocale('en')
我落后一小時。
我如何“告訴”Luxon 當前的 TS 在 UTC 時區,并且呼叫toLocal將應用正確的用戶時區?
uj5u.com熱心網友回復:
該網站似乎還減去了我的時區 t
不,epochconverter.com 沒有做任何事情。值1639063064真的不表示2021-12-09T15:17:44Z。那不是你想要的價值。
我不是 Python 專家,但我相信問題是這種utcnow()行為的組合(強調我的):
回傳當前的 UTC 日期和時間,帶有
tzinfo None.這就像
now(),但回傳當前的 UTC 日期和時間,作為一個簡單的 datetime 物件。
而這種timestamp()行為:
假設樸素的日期時間實體表示本地時間,并且此方法依賴于平臺 C
mktime()函式來執行轉換。
聽起來您想遵循以下建議:
可以通過呼叫獲取感知的當前 UTC 日期時間
datetime.now(timezone.utc)。
所以只需將您的第一行更改為:
dt = datetime.now(timezone.utc)
……應該沒問題。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/382554.html
下一篇:將當前日期放在路徑名中
