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日期函数_Python日期时间处理: datestuff相关推荐

  1. python日期函数_python 时间及日期函数

    本人最近新学python ,用到关于时间和日期的函数,经过一番研究,从网上查找资料,经过测试,总结了一下相关的方法. import time import datetime '''时间转化为时间戳: ...

  2. mysql 日期时间格式化字符串_MySQL日期函数与日期转换格式化函数大全

    Mysql作为一款开元的免费关系型数据库,用户基础非常庞大,本文列出了MYSQL常用日期函数与日期转换格式化函数 1.DAYOFWEEK(date) SELECT DAYOFWEEK('2016-01 ...

  3. 【Excel2019(十四):日期函数】【认识时间和日期+日期函数+计算日期间隔+星期计算】

    上一篇:[Excel2019(十三):简单应用][批量生成多个文档+利用word发送邮件+每页显示多条记录(创建试卷文档)] 文章目录 认识时间和日期 日期函数 推算日期 案例一:结束日期 案例二:本 ...

  4. oracle显示当天日期函数,oracle日期函数

    oracle日期函数 1.日期时间间隔操作  当前时间减去7分钟的时间 select sysdate,sysdate - interval '7' MINUTE from dual 当 ...

  5. 【转】MySQL日期函数与日期转换格式化函数大全

    Mysql作为一款开元的免费关系型数据库,用户基础非常庞大,本文列出了MYSQL常用日期函数与日期转换格式化函数 1.DAYOFWEEK(date) 1 2 SELECT DAYOFWEEK('201 ...

  6. mysql带中文日期转换_MySQL日期函数与日期转换格式化函数大全

    Mysql作为一款开元的免费关系型数据库,用户基础非常庞大,本文列出了MYSQL常用日期函数与日期转换格式化函数 1.DAYOFWEEK(date) 2.WEEKDAY(date) 3.DAYOFMO ...

  7. 将mysql日期格式转换_MySQL日期函数与日期转换格式化函数大全

    Mysql作为一款开元的免费关系型数据库,用户基础非常庞大,本文列出了MYSQL常用日期函数与日期转换格式化函数 1.DAYOFWEEK(date) 2.WEEKDAY(date) 3.DAYOFMO ...

  8. python日期函数_python 时间相关函数

    python 中与时间处理相关的模块包括 time.datetime.以及 calendar time 模块 time() 函数:time() 函数用于返回当前时间的时间戳(1970年01月08时00 ...

  9. python日期函数_python时间函数(time)

    (一)时间获取 (1)time.time() 该函数用来获取当前时间的时间戳,是一个很长的float数字 time.time() 运行结果: 1600438898.135828 (2)time.cti ...

  10. python比较日期大小_Python日期的处理——datetime模块

    本文作者:胡   婧 文字编辑:杨慧琳 技术总编:张学人 好消息!!!爬虫俱乐部将于2019年7月5日至7月8日在武汉举行首期Python编程技术定制培训.本次培训采用理论与案例相结合的方式,旨在帮助 ...

最新文章

  1. Linux下redis的安装
  2. oracle 11g asm 磁盘组兼容属性
  3. python fabric使用
  4. 1.简单认识PHP和环境搭建
  5. 粒子群算法求解旅行商问题
  6. css hot loader,解决安装react-hot-loader后修改css/less文件不会热更新问题
  7. HDU4607(求树中的最长链)
  8. MybatisPlus 通用枚举无法正确取值
  9. python的符号函数得到的数字类型_Python笔记——数字类型的几个函数
  10. 《Head First 设计模式》专题上线
  11. @async 如何返回list_图解 Await 和 Async
  12. 数据结构与算法-复杂的问题简单化
  13. Ext js框架模拟Windows桌面菜单管理模板
  14. Python:计算器(代码全+解析+实现结果)
  15. 2022-2028年中国通信大数据行业深度调研及投资前景预测报告
  16. 生活中的设计模式之状态(State)模式
  17. no.10京东咚咚架构演讲读后感
  18. js去除字符串中的空白字符(也可以去除其他字符串)
  19. 享学独立站:Logo设计理念
  20. scratch学习相关资料汇总

热门文章

  1. 平板连接远程Linux,如何从Android平板电脑远程控制Ubuntu | MOS86
  2. 如何进入华为云服务器,【华为云入门】如何快速创建弹性云服务器
  3. 作为程序员如何赚到第一桶金?
  4. html在页面显示一个正方形,CSS实现一个自适应的正方形的方法示例
  5. python instagram 爬虫
  6. 离散数学——成真赋值与成假赋值
  7. 微软拼音 快捷输入 自定义格式的时间和日期
  8. git提交错分支怎么办
  9. 数据结构与算法(陈越版)第一讲 基本概念
  10. 【毕业设计项目】基于单片机的指纹识别系统实现 - 物联网 stm32 c51