跳转到主要内容

国际邮政地址格式化工具

项目描述

前缀日期解析器

这是一个解析具有不同精度级别的日期的辅助类。例如,数据源可能将日期表示为 20012001-42001-04-02,意味着只知道年份、月份或日期。此库将此类部分日期处理成结构化格式,并允许其验证和重新格式化(例如,将 2001-4 转换为 2001-04)。

该库不支持ISO 8601和RFC 3339标准的复杂性,包括日期范围和日历周/年中的日期表示法。

安装

使用PyPI安装prefixdate

$ pip install prefixdate

用法

该库提供各种辅助函数来解析和格式化部分日期

from prefixdate import parse, normalize_date, Precision

# Parse returns a `DatePrefix` object:
date = parse('2001-3')
assert date.text == '2001-03'
date = parse(2001)
assert date.text == '2001'
assert date.precision == Precision.YEAR

date = parse(None)
assert date.text is None
assert date.precision == Precision.EMPTY
# This will also be the outcome for invalid dates!

# Normalize to a standard string:
assert normalize_date('2001-1') == '2001-01'
assert normalize_date('2001-00-00') == '2001'
assert normalize_date('Boo!') is None

# This also works for datetimes:
from datetime import datetime
now = datetime.utcnow().isoformat()
minute = normalize_date(now, precision=Precision.MINUTE)

# You can also feed in None, date and datetime:
normalize_date(datetime.utcnow())
normalize_date(datetime.date())
normalize_date(None)

您还可以使用类似datetime构造函数的parse_parts辅助函数

from prefixdate import parse_parts, Precision

date = parse_parts(2001, '3', None)
assert date.precision == Precision.MONTH
assert date.text == '2001-03'

格式字符串

对于尚未存储为ISO 8601类似字符串格式的日期,您可以提供一个或多个格式字符串供datetime.strptime使用。这些格式字符串将被分析以确定预期的日期精度。

from prefixdate import parse_format, parse_formats, Precision

date = parse_format('YEAR 2021', 'YEAR %Y')
assert date.precision == Precision.YEAR
assert date.text == '2021'

# You can try out multiple formats in sequence. The first non-empty prefix
# will be returned:
date = parse_formats('2021', ['%Y-%m-%d', '%Y-%m', '%Y'])
assert date.precision == Precision.YEAR
assert date.text == '2021'

注意事项

  • 日期时间总是转换为UTC并变为无时区信息(tzinfo被移除)
  • 尚未处理毫秒。
  • 不处理无效的日期,如2月31日。

项目详情


下载文件

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

源代码分发

prefixdate-0.4.1.tar.gz (6.2 kB 查看散列值)

上传时间 源代码

构建分发

prefixdate-0.4.1-py2.py3-none-any.whl (7.2 kB 查看散列值)

上传时间 Python 2 Python 3

由以下提供支持