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

时间:2015-06-06 12:22:46

标签: python datetime timezone pytz

我在两个日期时间之间获得一个随机日期时间,代码为

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()使它成为一种天真的日期时间格式。

1 个答案:

答案 0 :(得分:2)

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