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

标签 python datetime timezone

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

我将日期存储为:

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

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

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

    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 纪元时间戳,因为这将使我的数据库操作非常容易(<、>、== 等)。

最佳答案

获取当前时间为 UTC 并将其转换为 EST 的第一步似乎有点毫无意义。你有没有把这段时间用在什么事情上?

除此之外,它似乎相当直截了当。您想以 UTC 获取一天 EST 的开始和结束,因此您创建它们并将它们转换为 UTC。那没那么复杂。 :-)

不过,您可能希望查看匹配例程,以便可以使用今天的开始作为较低的值,将明天的开始作为较高的值,这样您就不必处理 23:59 :59.9999 时间。

更新:

根据我对您问题的最初理解,这就是您想要做的:

首先,您想要获取 UTC 中的当前日期(因此,在 12 日东部标准时间晚上 11 点,您想要 22 日,因为它是 UTC 中的 22 日。

>>> from datetime import datetime
>>> today = datetime.utcnow().date()
>>> today
datetime.date(2013, 2, 21)

其次,您希望 UTC 当天的 00:00:00 作为搜索的开始。

>>> from dateutil import tz
>>> start = datetime(today.year, today.month, today.day, tzinfo=tz.tzutc())
datetime.datetime(2013, 2, 21, 0, 0, tzinfo=tzutc())

除非您想知道纽约的时间:

>>> from dateutil import tz
>>> est = tz.gettz('America/New_York')
>>> start = start.astimezone(est)
>>> start
datetime.datetime(2013, 2, 20, 19, 0, tzinfo=tzfile('/usr/share/zoneinfo/America/New_York'))

而且你还希望明天作为结束:

>>> from datetime import timedelta
>>> end = start + timedelta(1)
>>> end
datetime.datetime(2013, 2, 21, 19, 0, tzinfo=tzfile('/usr/share/zoneinfo/America/New_York'))

总结:

today = datetime.utcnow().date()
start = datetime(today.year, today.month, today.day, tzinfo=tz.tzutc()).astimezone(est)
end = start + timedelta(1)

关于python - 确定当天的开始和结束时间(UTC -> EST -> UTC); Python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14972802/

相关文章:

java - webapp中的时区问题

python - 调用函数时“int”对象不可调用

python - 如何忽略范围循环中的重复值

c# - 获取两个 DateTime 实例的差值(以毫秒为单位)

ios - NSDate:将 UTC 值转换为军事时区值

php - 在 OS X : getting the timezone in PHP or from a command prompt in Terminal

python - 在dask数据帧上使用groupby

python - 相当于 perl "a"的 python 是什么。 ."azc"

python - 比较 pandas 中的 DateOffsets

c# - 使用 C# 查找当前莫斯科时间