当前位置: 首页 > 知识库问答 >
问题:

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

蒯胜泫
2023-03-14

我将我所有的时间存储在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(我的时区)来夹紧。

    如果这不是最好的方法,或者我错过了什么(对我来说确实过于复杂),请帮我看到光明!

    短暂性脑缺血发作

    按答案更新:

    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 epoch timestamp,因为这将使我的数据库操作非常简单(

  • 共有3个答案

    潘哲
    2023-03-14

    我一定会给德洛林看一看,要解决你的问题,需要遵循几个步骤。

    首先需要解析字符串。使用Delorean解析方法非常好。

    >>> from delorean import parse
    >>> d = parse("Wed, 20 Feb 2013 03:51:39 +0000")
    >>> d
    Delorean(datetime=2013-02-20 03:51:39+00:00, timezone=UTC)
    

    一旦你有了你在Delorean对象中解析的日期时间,你只需转换为EST

    >>> d = d.shift('US/Eastern')
    >>> d
    Delorean(datetime=2013-02-19 22:51:39-05:00, timezone=US/Eastern)
    

    尽管毫无意义。在你的问题中,你从来没有用过它,但对德洛林来说,它非常简单。

    那你现在有时间了

    从德洛林进口德洛林

    >>> d1 = Delorean(timezone="US/Eastern")
    >>> d1
    Delorean(datetime=2013-02-21 00:35:56.405256-05:00, timezone=US/Eastern)
    

    现在是截断步骤。

    >>> d.truncate('day')
    Delorean(datetime=2013-02-21 00:00:00-05:00, timezone=US/Eastern)
    

    如上所述进行简单的UTC转换。

    现在结束一天。

    d = d.next_day(1) # move to the next day
    

    然后向后移动一秒钟。图书馆需要的东西,我会更新这个。只需使用datetime属性从Delorean示例中获取datetime。

    d.datetime - timedelta(seconds=1)
    datetime.datetime(2013, 2, 21, 23, 59, 59, tzinfo=<DstTzInfo 'US/Eastern' EST-1 day, 19:00:00 STD>)
    

    祝你好运,但是这个库应该只是你处理datetime操作:)

    郤立果
    2023-03-14

    使用datetimepytz将解决您的问题。

    def get_start_and_end():
        tz = pytz.timezone('Asia/Shanghai')
        today = datetime.now(tz=tz)
        start = today.replace(hour=0, minute=0, second=0, microsecond=0)
        end = start + timedelta(1)
    
        return start, end
    
    郑星雨
    2023-03-14

    将当前时间转换为UTC并将其转换为EST的第一步似乎毫无意义。你用这段时间做什么?

    除此之外,这似乎相当简单。您想在UTC中获取一天的开始和结束,所以您创建它们并将它们转换为UTC。这并不复杂。:-)

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

    更新:

    从我对你问题的最初理解来看,这是你想做的:

    首先,您希望获得UTC中的当前日期(因此,在美国东部时间12日晚上11点,您希望得到UTC中的第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)
    
     类似资料:
    • 我是PostgreSQL的新手,我想知道是否有一种直接的方法可以使用函数将表中的时间戳值转换为不同的时区。在我的情况下,是UTC到EST。 例如,我需要将这些值转换为EST(不仅仅是一个值,而是表中的所有值)

    • 选择from_tz(CAST('08-mar-202002.05.02.575000000 am'作为时间戳),'CST')在时区'UTC',从DUAL选择_Daylight_Savings; 从DUAL中选择时区'UTC'处的TO_TIMESTAMP('08-mar-1502.05.02.575000000 am'); 但是,我得到的所有这些语句都是相同的错误消息。 *操作:确保指定的字段在da

    • 问题内容: 获取当前UTC时间的功能是什么。我已经尝试使用System.getCurrentTime,但是我得到了设备的当前日期和时间。 谢谢 问题答案: 确实会提供自1970年1月1日UTC以来的毫秒数。您看到本地时间的原因可能是因为您在使用实例之前将其转换为字符串。您可以使用s 在任何时区将s 转换为s: 另请参阅此相关问题。

    • 问题内容: 我真的对方法调用的结果感到困惑,因为它返回了IST时间。 这是我使用的代码 我得到的答复是: 所以我尝试将默认的TimeZone更改为UTC,然后检查了一下,然后工作正常 结果: 我在这里想念什么吗? 问题答案: 该调用返回的。正是它将转换为的字符串,并且这种转换将使用您所用的默认时区。 您需要明确使用来在所需的时区中打印。 编辑:@Laurynas的礼貌,请考虑以下事项:

    • 本文向大家介绍Python获取昨天、今天、明天开始、结束时间戳的方法,包括了Python获取昨天、今天、明天开始、结束时间戳的方法的使用技巧和注意事项,需要的朋友参考一下 如下所示: 输出结果 以上这篇Python获取昨天、今天、明天开始、结束时间戳的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持呐喊教程。