在Python中获取随机时区感知的datetime



我得到两个日期时间之间的随机日期时间与以下代码

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()使它成为一个幼稚的日期时间格式。

如果你在代码中使用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()

相关内容

  • 没有找到相关文章

最新更新