在 Python 中获取随机时区感知日期时间

Posted

技术标签:

【中文标题】在 Python 中获取随机时区感知日期时间【英文标题】:Get random timezone aware datetime in 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() 使它成为一种幼稚的日期时间格式。

【问题讨论】:

看到这个答案:***.com/questions/12626045/… 【参考方案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()

【讨论】:

以上是关于在 Python 中获取随机时区感知日期时间的主要内容,如果未能解决你的问题,请参考以下文章