你需要不止一个timedelta来说明多少年过去了;你还需要知道开始(或结束)日期。(这是闰年的事。)

最好的方法是使用dateutil.relativedeltaobject,但这是第三方模块。如果您想知道从某个日期起的datetime年(默认为现在),可以执行以下操作:from dateutil.relativedelta import relativedelta

def yearsago(years, from_date=None):

if from_date is None:

from_date = datetime.now()

return from_date - relativedelta(years=years)

如果你愿意坚持使用标准库,答案就更复杂了:from datetime import datetime

def yearsago(years, from_date=None):

if from_date is None:

from_date = datetime.now()

try:

return from_date.replace(year=from_date.year - years)

except ValueError:

# Must be 2/29!

assert from_date.month == 2 and from_date.day == 29 # can be removed

return from_date.replace(month=2, day=28,

year=from_date.year-years)

如果是2/29,而18年前没有2/29,这个函数将返回2/28。如果您希望返回3/1,只需将最后一个return语句改为:return from_date.replace(month=3, day=1,

year=from_date.year-years)

你的问题本来是想知道从某个日期到现在有多少年了。假设您需要整数年数,可以根据每年365.25天进行猜测,然后使用上面定义的yearsago函数之一进行检查:def num_years(begin, end=None):

if end is None:

end = datetime.now()

num_years = int((end - begin).days / 365.25)

if begin > yearsago(num_years, end):

return num_years - 1

else:

return num_years

python中时间间隔默认单位是什么_Python时间增量(以年为单位)相关推荐

  1. Python中matplotlib默认绘制的条形图比较胖?如何设置成体型匀称的条形图,达到最佳的可视化效果。

    Python中matplotlib默认绘制的条形图比较胖?如何设置成体型匀称的条形图,达到最佳的可视化效果. #默认情形下的条形图 n_bars = len(x_labels)xval = np.ar ...

  2. python中math.ceil是什么意思_python中的数字取整(ceil,floor,round)概念和用法

    python中的数学运算函数(ceil,floor,round)的主要任务是截掉小数以后的位数.总体来说 就是取整用的.只是三者之间有微妙的区别: floor() :把数字变小 ceil() : 把数 ...

  3. python中用于获取当前目录的是_python中获得当前目录和上级目录的实现方法

    python中获得当前目录和上级目录的实现方法 获取当前文件的路径: from os import path d = path.dirname(__file__) #返回当前文件所在的目录 # __f ...

  4. python中str的index什么意思_python中index的用法是什么

    index() 一般用处是在序列中检索参数并返回第一次出现的索引,没找到就会报错,比如:>>> t=tuple('Allen') >>> t ('A', 'l', ...

  5. python中gil锁和线程锁_Python线程——GIL锁、线程锁(互斥锁)、递归锁(RLock)...

    GIL锁 ​ 计算机有4核,代表着同一时间,可以干4个任务.如果单核cpu的话,我启动10个线程,我看上去也是并发的,因为是执行了上下文的切换,让看上去是并发的.但是单核永远肯定时串行的,它肯定是串行 ...

  6. python中int表示的数据类型是_python中的基本数据类型之 int bool str

    一.基本数据类型 1. int  ==>  整数.主要用来进行数学运算. 2.str  ==>  字符串.可以保存少量的数据,并进行相应的操作. 3.bool  =>  布尔值.判断 ...

  7. python中字典和集合的区别_Python中字典和集合学习小结

    映射类型: 表示一个任意对象的集合,且可以通过另一个几乎是任意键值的集合进行索引 与序列不同,映射是无序的,通过键进行索引 任何不可变对象都可用作字典的键,如字符串.数字.元组等 包含可变对象的列表. ...

  8. python中可变参数和关键字参数_python的可变参数和关键字参数(*args **kw)

    本文是来自廖大的python教程其中我一直忘记的部分.算是一个笔记把.因为日常这俩参数名字一直搞混 可变参数 在Python函数中,还可以定义可变参数.顾名思义,可变参数就是传入的参数个数是可变的,可 ...

  9. python中数字应该用什么表示_Python

    Python Number(数字) Python Number 数据类型用于存储数值. 数据类型是不允许改变的,这就意味着如果改变 Number 数据类型的值,将重新分配内存空间. 以下实例在变量赋值 ...

最新文章

  1. 网络推广专员浅析如何在日常网络推广过程中增加网站转化率?
  2. java 手动编译打包_Maven 手动添加第三方依赖包及编译打包和java命令行编译JAVA文件并使用jar命令打包...
  3. JDK工具jstatd用法详解(转)
  4. 【软件开发底层知识修炼】十七 快速学习GDB调试四 使用GDB进行函数调用栈的查看
  5. 自动化测试和性能测试工具的区别
  6. 《程序员修炼之道(第2版)》!屹立20年王者归来!
  7. 纯python好找工作吗_Python现在好找工作么?
  8. 一样是图标设计,UI 小白应该和老司机学的上手技能,临摹!
  9. ubuntu下gns3 0.7安装笔记
  10. 3dmax材质通道插件_3dmax插件外挂神器【疯狂模渲大师蓝色经典版】第九章:渲染后期教程...
  11. Pycharm中创建一个 Python 项目
  12. java报表技术总结_15个Java的报表工具总结
  13. 计算机主机箱背后的接口,计算机主机背面有哪些接口
  14. unity PC 、安卓修改数据库文件
  15. 蓝牙 aptx android,蓝牙aptx干嘛用的
  16. 《数据结构》实验三:栈和队列实验 (实验报告)
  17. 【第48题】实现一个冒泡排序
  18. TCP/IP中的TTL
  19. MicroPython-On-ESP8266——数码管的使用,从一个8段管开始
  20. 大二计算机跟老师做项目,在大学里,要不要和老师一起合作做项目?过来人说出实情...

热门文章

  1. SSM 整合 3:一个 Spring 入门程序带你来了解什么是控制反转(IoC)/依赖注入(DI)!
  2. 采用Kruskal算法生成最小生成树,并采用并查集的合并优化和查询优化。
  3. eclipes创建一个web项目web.xml不能自动更新的原因(web.xml和@WebServlet的作用)
  4. idea连接跳板机_跳板机服务(jumpserver)
  5. Python 装饰器详解(下)
  6. mysql日期格式化季度_mysql 按年度、季度、月度、周、日SQL统计查询
  7. windows设置mysql使用率_Windows下配置Mysql
  8. android layer阴影,Android Layer-List实现自定义Shape阴影
  9. Nginx(三):反向代理
  10. 美国将尝试区块链领域和加密货币相结合