Я пытаюсь выбрать случайную дату между датой начала и датой окончания. Однако в результате я получаю сообщение об ошибкеValueError: Invalid format string
Вот мой сценарий. В чем проблема?
start = datetime.datetime.strptime('2022-01-01 00:00:00', '%Y-%m-%d %H:%M:%S') # Specify start date
end = datetime.datetime.strptime('2022-01-10 00:00:00', '%Y-%m-%d %H:%M:%S') # Specify end date
def random_datetime(start, end):
# add check for start, end as datetime
a = start.strftime('%s')
b = end.strftime('%s')
return datetime.datetime.fromtimestamp(random.randint(a, b))
print(random_datetime(start, end))
Решение проблемы
Я ожидаю, что random.randint(a,b) выберет случайную дату и время между двумя указанными датами вне функции.
Если вы ищете функцию, которая создает случайную дату и время между заданными днями:
import datetime
import random
def random_datetime(start, end):
a = start.timestamp()
b = end.timestamp()
return datetime.datetime.fromtimestamp(random.uniform(a, b))
>>> random_datetime(datetime.datetime.strptime('2022-01-01 00:00:00', '%Y-%m-%d %H:%M:%S'), datetime.datetime.strptime('2022-01-10 00:00:00', '%Y-%m-%d %H:%M:%S'))
datetime.datetime(2022, 1, 7, 17, 22, 24, 99912)
random.uniformпринимает два числа в качестве параметров и возвращает число с плавающей запятой в этом диапазоне, а datetime.timestamp()возвращает временную метку POSIX как число с плавающей запятой.
Комментариев нет:
Отправить комментарий