快速分析和格式化日期

dateformat的Python项目详细描述



`dateformat`做两件事:将'datetime'对象转换成字符串,并将字符串转换成'datetime'对象。
我们的目标是简单而出色地完成这些工作,并满足以下标准: < BR>
*足够快(基准见下文)
*处理来自多个来源的各种日期格式
*分析和格式化多个时区和多个时区偏移的日期
*以非技术人员可能理解的方式表示预期格式
*明确预期格式以防止启发式错误 < BR>
>;"但为什么还要另一个日期库?" < BR>
目前还没有一个与这些
对于我的用例来说,需求已经足够了。[`arrow`](http://arrow.readthedocs.io/en/latest/)
最接近,但在性能方面仍然不太合适。 < BR>
用法 < BR>
所有功能都基于dateformat()对象: < BR>
` < BR>
从提供的规范字符串创建DateFormat对象。 < BR>
```
>;>>来自日期格式导入日期格式 < BR>
>;>>日期格式=日期格式("yyyy-mm-dd hh:mm:ss.ssss+hh:mm")
``` < BR>
如果未提供"是24小时",则如果上午/下午
规格中有零件,否则日期将为24小时模式。 < BR>
dateformat实例有两种方法: < BR>
` < BR>
将包含日期的字符串(`data`)解析为datetime对象。 < BR>
```
>>>日期=日期格式。解析("2017-06-03 15:32:00.2364-02:00")
datetime.datetime(2017,6,3,15,32,0,236400,tzinfo=datetime.timezone(datetime.timedelta(-179200)))
``` < BR>
`定义格式(自我,日期)` < BR>
将传入的"datetime.datetime"对象("date")格式化为字符串: < BR>
```
>>gt;打印(日期格式。格式(日期))
2017-06-03 15:32:00.2364-02:00
``` < BR>
时区 < BR>
如果格式的任何部分提供时区或UTC偏移量,则分析
生成带有时区的日期,该时区指示相关的UTC偏移量。 < BR>
同样,如果dateformat有时区部分,则日期传递给`.format()。`
必须包含TZINFO值。 < BR>
如果pytz可用,则提供某种级别的命名时区支持。 < BR>
前导零 < BR>
日期格式的所有数字部分都是零填充到字符数
在规范中,即"dd"表示一个月中的某一天为零,填充为2位数字。 < BR>
在解析过程中,通常忽略缺少的前导零,但如果没有分隔符
在部件之间(例如:yyyymmdd),缺少前导零将导致错误或错误值。 < BR>
目前,所有格式化日期都是零填充的,将来,这可能是可控的。 < BR>
日期格式规范
部分示例说明|
---|
`+hhmm`-0515提供的UTC偏移量为2位小时和2位分钟,不带分隔符|
`+hh:mm`-05:15提供的UTC偏移量为2位小时和2位分钟,带":"分隔符|
|`+hh`-05仅作为2位小时提供的UTC偏移量|
`dddd`星期一一周中特定于区域设置的完整日期(注意,此值在日期解析期间忽略,但在日期格式期间添加)|
`ddd` mon星期几特定于区域设置的短名称(解析时忽略)|
‘dd ` 05一个月的零填充日。γ
`mmmmm`九月月份作为区域设置的全名|
` mmm` sep month作为语言环境的缩写名称|
‘yyyy ` 2017以世纪为数字的年份|
‘yy ` 17零填充世纪年份|
'hh` 09小时为零填充数字|
"mm` 06分钟作为零填充数字|
‘ss ` 45第二个零填充数字|
'ssss` 123456微秒作为零填充的十进制数|
'ssss` 1234 100微秒作为零填充数字|
'sss` 123毫秒作为零填充数字|
‘ss ` 12 10毫秒作为零填充数字|
`.format()`匹配规范的大小写。如果存在,dateformat将默认为12小时模式|
` `在解析过程中忽略,在格式化过程中添加|
"st` th月日的适当后缀,例如"1_st_july"、"2_nd_march"|
` ` t(Unicode打开框-U+2423)与字符"t"或空格""匹配。在格式化过程中,总是使用"t"(这是为了在解析ISO8601格式时提高灵活性而提供的)|
space在解析期间匹配一个或多个空格。格式化期间,将输出一个空格|
| < BR>< BR>
示例 < BR>
格式示例|
--|
`yyyy-mm-ddthh:mm:ss` 2017-06-06t09:45:15|
`yyymmddhhmmss` 20170606094515|
`yyymmddhhmmss.ssssss z` 20170606094515.123456z|
`mm/dd/yy hh:mm+hhmm` 06/06/17 09:45-0500| < BR>< BR>
库比较 < BR>
dateformat datetime(内置python模块) < BR>
dateformat不是试图替代内置的datetime模块。` datetime.datetime`对象用作解析和格式化方法的输入/输出。 < BR>
它被设计为替换"datetime.datetime.strftime"和"datetime.datetime.strptime"方法,提供: < BR>
*更好的时区处理
*用于指定日期格式的更简单/更常见的语法
*解析速度略快 < BR>
dateformat dateutil.parser.parse() < BR>
`dateutil.parser.parse`的目的是将未知格式的字符串转换为日期。它通过使用各种试探法来尝试找出日期的格式。 < BR>
这种方法非常有用,而且非常灵活,但有两个DateFormat没有的缺点: < BR>
*对于从给定字符串生成的日期有歧义,存在无法接受该风险的情况,并且系统必须只接受特定的日期格式
*由于DateUtil在计算所使用的格式方面所做的所有工作,它的速度相当慢,仅比"strTime"慢10倍,这在10s到100s之间是非常明显的数千日期。 < BR>
日期格式箭头 < BR>
箭头最接近日期格式的工作方式,描述日期的语法非常相似。不幸的是,arrow在每次解析日期时都会构造它的解析器,在解析每个日期时都会产生很大的开销。 < BR>
日期格式ISO8601/CISO8601 < BR>
CISO8601非常快。不幸的是,这两个库都只处理单一的日期格式,因此在这种情况下没有用处。 < BR>
基准 < BR>
"benchmark/"目录包含一些简单的脚本,用于显示相关库在解析和格式化日期时的执行情况。 < BR>
在2016 MacBook Pro上运行,在Python 3.6.3上运行,得到以下结果(3次运行中最好的一次): < BR>
(请注意,分析时间图表y轴已被钳制为1s,但dateparser需要16s才能完成) < BR>
![显示相对日期解析性能的图表](https://github.com/stestagg/dateformat/raw/master/benchmark/parse_times.png) < BR>
![显示相对日期格式性能的图表](https://github.com/stestagg/date format/raw/master/benchmark/format_times.png) < BR>< BR>
关键字:日期时间分析格式化日期时间
平台:未知
分类器:开发状态::3-alpha
分类器:目标受众::开发人员
分类器:主题::软件开发::构建工具
分类器:许可证::OSI批准::MIT许可证
分类器:编程语言::python::3
分类器:编程语言::python::3.3
分类器:编程语言::python::3.4
分类器:编程语言::python::3.5
提供额外的:测试 < BR>

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
安卓 Java。null对象引用上的lang.NullPointerException   java如何测试传递的对象是集合还是数组   java如何重新培训接收v3?   Netbeans中的Java类SimpleDate不是SimpleDateFormat问题   从安卓库项目引用的java Jar未被应用程序引用。NoClassDefFoundError   java寻找奇数除数   java在不同的JVM上运行多个JMS使用者   java倾斜缓冲区有关xaxis的图像   Java中的最大子序列和算法   Spring REST中的java EOFEException   导致问题的Java泛型   多线程为什么两个Java线程(在某些情况下)的速度是一个线程的两倍以上?   java注销将重定向到“/sessiontimeout”,而不是“/Logout”`   java无法在小程序中获取InputStream()   java遇到过早的文件结束异常   java从文件读入并添加到2D数组   java如何在我的GAE网站上检测已经从谷歌注销的用户   java将一个键放入特定目录中的json中,将该键放入所有目录(JsonPath.parse(String))。放置)