使用Python生成随机的ISO8601日期?

7

我看到了如何使用Python的datetime将ISO格式的日期(例如2007-01-14T20:34:22+00:00)转换为更易读的格式。

是否有一种简单的方法来生成类似于datetime字符串的随机ISO8601日期,类似于这个答案

3个回答

15

我建议使用这个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'

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

4

如果你只想生成一个随机日期,你可以按照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(0,24)]
min_range = [str(i).zfill(2) for i in range(0,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)

如果您想确保日期有效,那么需要进行修改。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接