【问题标题】:How to convert GMT to EDT (into seconds format)如何将 GMT 转换为 EDT(转换为秒格式)
【发布时间】:2020-12-13 16:03:31
【问题描述】:
import time
time1 = time.time()

现在,我们使用time.time() 来获取当前时间(以秒为单位)。如何将 GMT 当前时间以秒格式转换为 EDT 当前时间?

【问题讨论】:

标签: python datetime


【解决方案1】:

您可以从 Unix 时间转到正确本地化的日期时间对象,例如

import time
from datetime import datetime, timezone
from zoneinfo import ZoneInfo # Python 3.9

# alternatively, instead of ZoneInfo:
# from dateutil.tz import gettz

time1 = time.time() # unix time, now
# sames as datetime.now(timezone.utc).timestamp()

dt = datetime.fromtimestamp(time1, tz=timezone.utc) # corresponding datetime object
dt_eastern = dt.astimezone(ZoneInfo('US/Eastern')) # gettz('US/Eastern')

print(dt_eastern)
print(repr(dt_eastern))
# 2020-08-25 01:27:05.230289-04:00
# datetime.datetime(2020, 8, 25, 1, 27, 5, 230289, tzinfo=tzfile('US/Eastern'))

【讨论】:

    【解决方案2】:

    由于 GMT 时间比 EST/EDT 时间早 4 小时,
    您只需以秒为单位将 time1 变量减去 4 小时(60 秒 * 60 分钟 * 4 小时 = 14,400 秒)

    因此您的代码应如下所示:

    import time
    time_GMT = time.time()
    time_EST = time_GMT - 14400
    

    【讨论】:

    • 提问者是否希望将 GMT 转换为 EDT(即 GTM - 4 小时)或东部时间,根据日期的不同,可以是 4 到 5 小时?
    • 这给你的 UNIX 时间不是 UNIX 时间,而是几个小时。我认为这相当令人困惑......最好选择正确本地化的日期时间对象。
    猜你喜欢
    • 2011-07-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-20
    • 2011-04-09
    • 1970-01-01
    • 2012-07-04
    • 1970-01-01
    相关资源
    最近更新 更多