小能豆

确定当天的开始和结束时间(UTC -> EST -> UTC); Python

python

我将所有时间存储为 UTC,并且我的系统设置为 UTC(尽管我使用的是 EST)。

我将日期存储为:

Wed, 20 Feb 2013 03:51:39 +0000

但是,我想根据今天的 EST 选择信息,因此我尝试:

  • 获取当前时间为 UTC 并更改为 EST

py datetime.utcnow().replace(tzinfo=tz.tzutc()).astimezone(tz.gettz('America/New_York')) 2013-02-19 23:17:20.560898-05:00

  • 接下来我想获取 EST 日的开始时间 (2013-02-19 00:00:00.000000-05:00) 和结束时间 (2013-02-19 23:59:59.99999-05:00)

  • 一旦我有了这些值,我想转换回 UTC,这样我就有了一个高值和低值,我可以根据它来限制我的 EST(我的时区)。

如果这不是最好的方法,或者我遗漏了一些东西(对我来说似乎过于复杂),请帮助我看到光明!

TIA

每个答案更新:

d1 = datetime.utcnow().replace(tzinfo=tz.tzutc()).astimezone(tz.gettz('America/New_York'))
print d1.strftime("%m %d %Y") ; d2 = d1.replace(day=d1.day + 1) ; print d2.strftime("%m %d %Y")

那会给我

02 20 2013
02 21 2013

哪个是对的。我现在需要从中生成完整的 EST 时间,然后转换为 UTC。这个我想不通。实际上,我可能想在完成后转换为 UTC 纪元时间戳,因为这将使我的数据库操作变得非常简单(<、>、== 等)。


阅读 78

收藏
2024-05-17

共1个答案

小能豆

您可以使用 Python 中的 datetime 和 pytz 模块来处理时区转换和日期时间操作。下面是一个示例代码,演示了如何获取今天 EST 的开始时间和结束时间,并将它们转换为 UTC 时间戳:

from datetime import datetime
import pytz

# 获取当前时间为 UTC 并将其转换为 EST
current_utc_time = datetime.utcnow().replace(tzinfo=pytz.utc)
current_est_time = current_utc_time.astimezone(pytz.timezone('America/New_York'))

# 获取今天 EST 的开始时间(00:00:00)和结束时间(23:59:59)
est_start_time = current_est_time.replace(hour=0, minute=0, second=0, microsecond=0)
est_end_time = current_est_time.replace(hour=23, minute=59, second=59, microsecond=999999)

# 将 EST 时间转换为 UTC 时间戳
est_start_time_utc_timestamp = int(est_start_time.timestamp())
est_end_time_utc_timestamp = int(est_end_time.timestamp())

print("EST Start Time:", est_start_time)
print("EST End Time:", est_end_time)
print("EST Start Time UTC Timestamp:", est_start_time_utc_timestamp)
print("EST End Time UTC Timestamp:", est_end_time_utc_timestamp)

这个示例中,首先获取当前时间的 UTC 时间,然后将其转换为美国东部时区(EST)。接下来,使用 replace() 方法将 EST 时间调整为今天的开始时间和结束时间。最后,使用 timestamp() 方法将 EST 时间转换为 UTC 时间戳。

您可以根据需要进一步调整和修改此代码,以满足您的具体需求。

2024-05-17