Python部落(python.freelycode.com)组织翻译,禁止转载,欢迎转发。

问题:

在一些场景下datetime包的使用并非那么简便易用,同时很难找到其他的较为完整的替代方案。

原因:

诚实地说,我非常喜爱datetime这个模块,几乎所有需要的操作都可以通过它实现。

但是,有一些情况下,datetime却并没有那么好用。比如:

1.创建日期时间范围

2.创建未固定的日期时间

3.检验两个日期时间的差值是否在一定的范围内。

以下是datestuff包的简略介绍:

RelativeDate和RelativeDateTime

这两个函数用来创建未固定的日期和时间,可以设置timedelta参数和factory method。

默认情况下,RelativeDate以date.today,RelativeDateTime以datetime.now作为默认的factory实现。两个功能都有初始默认timedelta(0):

但也可以使用其他的factory:

只要内部的factory能生成date或者datetime匹配的对象,那么都可以正常运行。这里的匹配是指date和datetime接口的匹配

另外,如果只是静态的偏移,你可以简单地通过设置timedelta 或 dateutil relativedelta来设置偏移。需要注意的是,目前timedelta 和 relativedelta不会相互干涉。

RelativeDate和RelativeDateTime还允许使用标准运算符(==,!=,>等)与date和datetime对象进行比较。 使得快速定义静态的date或者datetime边界(例如在serializer或ORM模型中)非常有用:

事实上,加法和减法是对它们的偏移量进行操作,而不是对date或datetime值操作。

另外还有一些函数可以构造日期和时间对象,每个都允许传递偏移量,但默认为timedelta():

RelativeDate.today: 默认的构造函数

RelativeDateTime.now: 默认的构造函数,允许设置tzinfo

RelativeDateTime.utcnow: 生成UTC的日期对象(注意:它依赖于datetime.utcnow函数)

RelativeDateTime.today: 默认的构造函数,不允许设置tzinfo

方便起见,也有一些构造静态时间对象的函数:

RelativeDate.fromdate: 构造常规的date对象

RelativeDateTime.fromdatetime: 构造常规的datetime对象

RelativeDateTime.fromdate: 在RelativeDateTime中鬼爪常规的date对象,可以设置tzinfo,类似于datetime.combine(the_date, time(tzinfo=tzinfo))

另外的静态构造函数,如datetime.strptime,如果需要的话,可以从以上函数中派生。

最后,在以上未直接提及的功能都被转换到date或datetime中实现。

DateRange

设置时间段我发现事自己经常需要的一种操作,然而,对于生成很长间隔的时间段来说是非常困难的。

相反,DateRange在Python3 range 基础上构建,该类型具有查找,迭代,索引和区间分割的功能(分割返回新的DateRange对象)

DateRange还允许通过忽略停止参数来创建开放式结束时间对象。如果使用len或者在分割或者索引选择中使用负值,该功能将不起作用。

目前,DateRange不支持relativedelta,它使用timedelta.total_seconds以确保Python 2和3的兼容。 这个问题也许在未来解决。然而,DateRange与date,datetime和timedelta的对象兼容。这一点也适用于RelativeDate和RelativeDateTime。

utils

目前,唯一的util是within_delta函数,它用于比较两个date或datetime(或类似)对象之差是否在某个设定时间区间中。

如果需要检验时间界限的话,这个函数用起来比DateRange或RelativeDate更加轻便。但坏消息时,它不能与relativedelta相互调用,因为它和timedelta对象是无序的(至少在Python 3是这样的)。

英文原文:https://github.com/justanr/datestuff

译者:alanf

python.freelycode.com-Python日期时间处理: datestuff相关推荐

  1. Python将字符串转换为日期时间

    In this tutorial, we'll see how to convert string to datetime in python. 在本教程中,我们将看到如何在python中将字符串转换 ...

  2. Python处理ISO 8601日期时间

    文章目录 一.ISO 8601日期时间 1. 简介 2. 格式 3. 时区划分 二.Python处理ISO 8601日期时间 1. 将 ISO 8601 转化为 UTC 标准日期时间 / 本地时间 2 ...

  3. Python 的6个日期时间库

    曾几何时,我们中的一个人(Lacey)盯了一个多小时的python文档中描述日期和时间格式化字符串的表格.当我试图编写从 API 中将日期时间字符串转换为Python datetime对象时,我很难理 ...

  4. 邮件发送时间怎么修改 python_使用python通过电子邮件发送日期时间

    我试图使用python脚本解析电子邮件的日期时间. 在我打开邮件时,邮件日期值如下所示... 1 2 3 4from: abcd@xyz.com to: def@xyz.com date: Tue, ...

  5. Python中的对日期时间的处理

    我们可以通过学习在Python中对日期时间的处理,可以在快速的完成工作,比如: 将日期时间作为日志信息的内容输入 计算某一个功能的执行时间 用日期命名一个文件的名称 记录或者展示文件的发布或修改时间 ...

  6. python自学时间-Python中基本的日期时间处理的学习教程

    Python程序能用很多方式处理日期和时间.转换日期格式是一个常见的例行琐事.Python有一个 time 和 calendar 模组可以帮忙. 什么是Tick? 时间间隔是以秒为单位的浮点小数. 每 ...

  7. Python—6.1、日期时间

    文档目录 1.time模块 时间元组 格式化符号 日期转换 日历模块 2.datetime模块 2.1.日期时区 2.2.当前时间 2.3.常用操作 2.4.时间加减 3.dateutil模块 1.t ...

  8. [转载] python日期时间使用详解和定时器使用讲解

    参考链接: Python日期时间 python中一个关于日期时间非常重要的模块是datetime模块,使用前先将它导入到项目中,import datetime. 获取当前时间 now=datetime ...

  9. Python常用日期时间格式转换总结

    日期格式转换不外乎就是日期格式-字符串格式-数值格式之间的相互转换,以及相同格式的不同形式间的转换,最常用的是datetime模块,下面直接举例子说明如何进行转换. 1. 日期时间格式转字符 首先获取 ...

最新文章

  1. sql sever avg保留小数_《数据库系统概念》笔记 (一)SQL
  2. Logstash(一)的入门与运行机制
  3. 公平与精确同样重要!CMU提出学习公平表征方法,实现算法公平
  4. db2去除字段内容空格_Vue CLI3.x 配置指南生产环境去除console
  5. 成电计算机学院保研率,985一条街的街友们,我就想问问电子科技大学(成电)到底是什么水平的学校啊!...
  6. 龙芯3A4000 VNC配置
  7. UVA 10588—— Queuing at the doctors
  8. Git 常用命令整理(持续更新)
  9. 简述Java Object类中的方法有哪些
  10. dcmtk编译 android,Win10编译Android可用的DCMTK-SO库
  11. gs地图开发_中国地图全图高清版大图审图号GS(2016)2923号
  12. Allegro导出pdf的两种方式
  13. 紫外线测光仪的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  14. pandas系列学习(七):数据透视表
  15. 创新实践 | SaaS增长新趋势:产品驱动增长PLG(下)
  16. 朱松纯教授:可解释性是人工智能获得人类信任的关键
  17. 数据库1NF 2NF 3NF范式解释
  18. 基于Unity3D的相机功能的实现(六)—— 上帝视角(王者荣耀视角)
  19. 论文阅读 (64):Weakly-supervised Video Anomaly Detection with Robust Temporal Feature Magnitude Learning
  20. 【官方文档】Fluent Bit 概念

热门文章

  1. IRC BOT原来是利用IRC下发CC命令——在xx云环境遇到了,恶意软件开的是6666端口...
  2. tensorflow 线性回归 iris
  3. 宠物乘机的三种模式【转】
  4. 谈谈互联网后端基础设施(转)
  5. JavaScript对css样式表操作
  6. Java多线程系列--“基础篇”10之 线程优先级和守护线程
  7. Dapper 多数据库优化
  8. 蓝桥杯 最长公共子序列
  9. 进程管理3--经典的进程同步问题
  10. 使用Windows Azure HDInsight Service在云上压缩大数据