用python生成一个随机的ISO8601日期?

时间:2014-08-11 15:01:50

标签: python datetime iso8601

我已经了解了如何从ISO格式的日期(例如2007-01-14T20:34:22+00:00)转到更加可读的格式{pyce datetime

是否有一种简单的方法可以为datetime字符串生成类似于this answer随机ISO8601日期

3 个答案:

答案 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)

  1. 确定您希望随机日期落入哪个范围。
  2. startend整数中计算这些日期的时间戳(自unix纪元以来的秒数)。
  3. 使用random.randrange(start, end)startend时间戳之间选择一个随机数。
  4. 使用datetime.fromtimestamp()
  5. 将此随机整数转换为日期时间
  6. 将日期时间更改为您想要的任何输出格式。

答案 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)

如果您想确保日期有效,则需要更改。