跳转到主要内容

生成随机日期(时间)。

项目描述

随机日期生成。

先决条件

  • Python 2.6.8+, 2.7.+, 3.3.+

安装

从PyPI安装最新稳定版本

$ pip install radar

或从bitbucket安装最新稳定版本

$ pip install -e hg+https://bitbucket.org/barseghyanartur/radar@stable#egg=radar

或从github安装最新稳定版本

$ pip install -e git+http://github.org/barseghyanartur/radar@stable#egg=radar

用法和示例

基本用法

>>> import radar
>>> radar.random_datetime()
datetime.datetime(2013, 5, 24, 16, 54, 52)

指定日期范围

您可以传递datetime.datetimedatetime.date对象

>>> import datetime
>>> import radar
>>> radar.random_date(
>>>     start = datetime.datetime(year=2000, month=5, day=24),
>>>     stop = datetime.datetime(year=2013, month=5, day=24)
>>> )
datetime.date(2012, 12, 31)

您也可以传递字符串

>>> radar.random_datetime(start='2012-05-24T00:00:00', stop='2013-05-24T23:59:59')
datetime.datetime(2013, 4, 18, 17, 54, 6)

生成随机时间

>>> radar.random_time(start='2012-01-01T00:00:00', stop='2012-01-01T23:59:59')
datetime.time(11, 33, 59)

高级用法

当传递字符串时,默认情况下,radar 使用 python-dateutil 包来解析日期。虽然 dateutil 包的日期解析器非常智能,但它相当庞大。作为替代方案,radar 包含自己的解析器 radar.utils.parse,它更轻量(比 dateutil 快约5倍)。

使用内置解析器

>>> radar.random_datetime(start='2012-05-24T00:00:00', stop='2013-05-24T23:59:59', parse=radar.utils.parse)
datetime.datetime(2012, 11, 10, 15, 43, 40)

内置解析器使用 radar.defaults.FORMATS 中指定的格式来解析日期。

>>> start = radar.utils.parse('2012-01-01')
datetime.datetime(2012, 1, 1, 0, 0)
>>> stop = radar.utils.parse('2013-01-01')
datetime.datetime(2013, 1, 1, 0, 0)

如果您想添加更多格式,请定义自己的格式并将其提供给内置解析器。

>>> MY_FORMATS = (
>>>     ("%d-%m-%YT%H:%M:%S", True),
>>>     ("%d-%m-%Y", False)
>>> )
>>>
>>> def my_parse(timestamp):
>>>     return radar.utils.parse(timestamp, formats=MY_FORMATS)
>>>
>>> radar.random_datetime(start='24-05-2012T00:00:00', stop='24-05-2013T23:59:59', parse=my_parse)
datetime.datetime(2012, 11, 10, 15, 43, 40)

一般说明

如果您在从字符串生成随机日期时预计会有非常奇怪的日期格式,您可能想考虑安装令人惊叹的 python-dateutil 包。

当生成数千个对象(使用 dateutil 或内置解析器)时,建议您传递日期范围作为 datetime.datetimedatetime.date 对象,而不是传递字符串(解析会花费时间)。

一个好例子

>>> start = radar.utils.parse('2000-01-01')
>>> stop = radar.utils.parse('2013-12-31')
>>> for i in xrange(1000000):
>>>     radar.random_datetime(start=start, stop=stop)

请参阅 https://bitbucket.org/barseghyanartur/radar/src (示例)目录以获取基准测试和更多示例。

许可

GPL 2.0/LGPL 2.1

支持

对于任何问题,请通过作者部分提供的电子邮件与我联系。

作者

Artur Barseghyan <artur.barseghyan@gmail.com>

项目详情


下载文件

下载适用于您平台的自定义文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。

源分布

radar-0.3.tar.gz (4.5 kB 查看哈希值)

上传时间

由以下赞助商支持