【问题标题】:Get random timezone aware datetime in Python在 Python 中获取随机时区感知日期时间
【发布时间】:2015-08-21 08:44:07
【问题描述】:

我使用以下代码在两个日期时间之间获得一个随机日期时间

start_date = datetime.datetime(2013, 1, 1, tzinfo=pytz.UTC).toordinal()
end_date = datetime.datetime.now(tz=pytz.utc).toordinal()
return datetime.date.fromordinal(random.randint(start_date, end_date))

问题是它不知道时区。

我已经尝试通过使用tzinfo=pytz.UTC 使其能够识别时区,如上面的代码所示,但它不起作用。我猜datetime.date.fromordinal() 使它成为一种幼稚的日期时间格式。

【问题讨论】:

标签: python datetime timezone pytz


【解决方案1】:

如果您在代码中使用datetime.datetime 而不是datetime.date,则.replace(tzinfo=pytz.utc) 会处理结果。

支持任意步骤(不仅仅是1 day):

#!/usr/bin/env python3
import random
from datetime import datetime, timedelta, timezone

step = timedelta(days=1)
start = datetime(2013, 1, 1, tzinfo=timezone.utc)
end = datetime.now(timezone.utc)
random_date = start + random.randrange((end - start) // step + 1) * step

注意:如果start 使用具有非固定UTC 偏移量的时区,则在最后调用tz.normalize()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-18
    • 2016-08-10
    • 1970-01-01
    • 2015-02-06
    • 2012-06-30
    • 1970-01-01
    相关资源
    最近更新 更多