【问题标题】:Converting a UTC Time to Epoch format将 UTC 时间转换为纪元格式
【发布时间】:2019-09-26 19:24:09
【问题描述】:

我正在尝试将特定的 UTC 时间和日期转换为自纪元以来的秒数;但是,由于我不在 UTC 时区,所以我无法弄清楚如何执行此操作。

我尝试使用 datetime 模块将日期和时间转换为自纪元以来的秒数,但 python 一直在使用我系统的本地时间,因此返回值相差 7 小时。我知道我可以简单地减去 7*60 以便它在我的时区工作;但是,我需要它在多个时区工作,而无需将时间更改硬编码到我的程序中。

除了它使用系统时间 (MST) 外,这可行,但我正在寻找一个专门针对 UTC 时间的解决方案。请注意,此处定义的变量代表了一个 UTC 时间示例,我试图将其转换为自纪元以来的秒数。

import datetime

year=2019
month=5
day=9
hour=21
minute=45

Time=datetime.datetime(year, month, day, hour, minute).timestamp()
print(Time)

输出:

1557463500.0

期望的输出(7 小时前):

1557438300.0

【问题讨论】:

    标签: python python-3.x datetime time python-datetime


    【解决方案1】:
    import datetime
    
    year=2019
    month=5
    day=9
    hour=21
    minute=45
    
    e = datetime.datetime(1970, 1, 1, 0, 0)
    t = datetime.datetime(year, month, day, hour, minute)
    print((t-e).total_seconds())
    

    【讨论】:

    • 对不起,我的英语不够好。我是英语初学者,这里是初学者:)
    【解决方案2】:

    您可以使用datetime.datetime.utcfromtimestamp(0).timestamp() 计算纪元日期的时间戳,然后从中减去您当前的时间戳

    import datetime
    
    year=2019
    month=5
    day=9
    hour=21
    minute=45
    
    #Date timestamp
    dt_timestamp=datetime.datetime(year, month, day, hour, minute).timestamp()
    
    #Epoch timestamp
    epoch = datetime.datetime.utcfromtimestamp(0).timestamp()
    
    #Epoch
    print(dt_timestamp-epoch)
    

    输出将是

    1557438300.0
    

    【讨论】:

    • 嗨@DavidSchwartz,我看到你接受了我的回答,然后不接受我的回答:) 我的回答有些遗漏。如果你能告诉我,我可以解决它:)
    猜你喜欢
    • 1970-01-01
    • 2021-12-31
    • 2016-06-07
    • 1970-01-01
    • 2021-01-01
    • 2015-01-23
    • 2016-02-06
    • 2020-09-14
    • 2019-11-14
    相关资源
    最近更新 更多