在 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 中获取随机时区感知日期时间的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Python 中结合时区感知日期和时间?

如何在 django 中获取时区感知日期?

Python - 给定一个时区感知的日期时间对象,我如何获得一个时区朴素的 UTC 日期时间对象?

Python 中的日期可以感知时区吗?

如何在 SqlAlchemy / Mysql 中存储时区感知日期时间值?

python - 如何在没有dateutil的情况下将时区感知字符串转换为Python中的日期时间?