我已经了解了如何从ISO格式的日期(例如2007-01-14T20:34:22+00:00
)转到更加可读的格式{pyce datetime
。
是否有一种简单的方法可以为datetime
字符串生成类似于this answer的随机ISO8601日期?
答案 0 :(得分:6)
我建议使用这个Faker库。
pip install faker
这是一个允许您生成各种随机“假”数据集的包。使用下面的Faker
生成一个随机datetime
对象,然后您可以使用datetime.datetime.isoformat
方法将其转换为ISO8601字符串格式。
import faker
fake = faker.Faker()
rand_date = fake.date_time() # datetime(2006, 4, 30, 3, 1, 38)
rand_date_iso = rand_date.isoformat() # '2006-04-30T03:01:38'
答案 1 :(得分:5)
start
,end
整数中计算这些日期的时间戳(自unix纪元以来的秒数)。random.randrange(start, end)
在start
和end
时间戳之间选择一个随机数。datetime.fromtimestamp()
答案 2 :(得分:2)
如果您只想生成一个随机日期,可以将其生成为ISO8601
的正确格式:
import random
iso_format = "{Year}-{Month}-{Day}T{Hour}:{Minute}+{Offset}"
year_range = [str(i) for i in range(1900, 2014)]
month_range = ["01","02","03","04","05","06","07","08","09","10","11","12"]
day_range = [str(i).zfill(2) for i in range(1,28)]
hour_range = [str(i).zfill(2) for i in range(1,25)]
min_range = [str(i).zfill(2) for i in range(1, 60)]
offset = ["00:00"]
argz = {"Year": random.choice(year_range),
"Month": random.choice(month_range),
"Day" : random.choice(day_range),
"Hour": random.choice(hour_range),
"Minute": random.choice(min_range),
"Offset": random.choice(offset)
}
print iso_format.format(**argz)
如果您想确保日期有效,则需要更改。