8

Pythonでは、年からランダムな日付を選択できます。たとえば、年が2010年の場合、返される日付は2010年6月15日である可能性があります。

4

5 に答える 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 に答える