在 Python 中,您可以从一年中选择一个随机日期。例如,如果年份是 2010 年,则返回的日期可能是 15/06/2010
问问题
13042 次
5 回答
20
使用序号日期要简单得多(根据今天的日期是 734158):
from datetime import date
import random
start_date = date.today().replace(day=1, month=1).toordinal()
end_date = date.today().toordinal()
random_day = date.fromordinal(random.randint(start_date, end_date))
对于 1AD 之前的日期,这将失败。
于 2011-01-21T14:13:58.923 回答
3
不是直接的,但您可以将随机天数添加到 1 月 1 日。我想以下应该适用于公历:
from datetime import date, timedelta
import random
import calendar
# Assuming you want a random day of the current year
firstJan = date.today().replace(day=1, month=1)
randomDay = firstJan + timedelta(days = random.randint(0, 365 if calendar.isleap(firstJan.year) else 364))
于 2011-01-21T13:34:15.570 回答
1
import datetime, time
import random
def year_start(year):
return time.mktime(datetime.date(year, 1, 1).timetuple())
def rand_day(year):
stamp = random.randrange(year_start(year), year_start(year + 1))
return datetime.date.fromtimestamp(stamp)
编辑: Michael Dunns 回答中使用的序数日期比时间戳更好用!不过,人们可能希望将序数的使用与此结合起来。
于 2011-01-21T13:52:27.740 回答
0
import calendar
import datetime
import random
def generate_random_date(future=True, years=1):
today = datetime.date.today()
#Set the default dates
day = today.day
year = today.year
month = today.month
if future:
year = random.randint(year, year + years)
month = random.randint(month, 12)
date_range = calendar.monthrange(year, month)[1] #dates possible this month
day = random.randint(day + 1, date_range) #1 day in the future
else:
year = random.randint(year, year - years)
month = random.randint(1, month)
day = random.randint(1, day - 1)
return datetime.date(year, month, day)
于 2015-03-07T10:36:31.577 回答
0
这是一个老问题,但是,你可以在这里使用我的新库 ^_^chancepy
from chancepy import Chance
randomDate = Chance.date(year=2020)
于 2020-08-31T12:24:54.583 回答