Python中如何计算两个日期之间的天数?

本文最后更新于2016年12月14日,已超过 1 年没有更新,如果文章内容失效,还请反馈给我,谢谢!

=Start=

缘由:

在程序中用到和日期相关的循环时,可能会需要提前确定两个日期之间的天数;还有就是在日常的一些记录中也会想了解两个日期之间的天数;总之,这样的需求是很多的。

正文:

参考解答:
>>> from datetime import date
>>> a = date(2011,11,24)
>>> b = date(2011,11,17)
>>> a-b
datetime.timedelta(7)
>>> (a-b).days
7

&

alias days='python -c "import sys; from datetime import date; \
    print (date(*map(int, sys.argv[2].split(\"-\"))) - date(*map(int, sys.argv[1].split(\"-\")))).days"'
$ vim ~/.zshrc
$ source ~/.zshrc
$ days 2016-12-4 2016-12-10
6
$ days 2016-1-1 2016-12-11
345

本来Python部分的代码是非常简单易懂的,但是在应用到alias的时候还是碰到了不少问题,可能是因为好久没碰代码了的缘故,对部分函数的特性不够熟悉导致。

  • string.split()函数只能指定一个字符/字符串作为分隔符;(如果想指定多个分隔符,需要用re模块的re.split()函数 #http://stackoverflow.com/a/1059601
  • datetime.date()函数只能接收3个int/long型的参数,而string.split()函数返回的是字符串型list,需要显示类型转换成int/long型;
  • map()函数的使用比较灵活,但在这里只需记住一点,接收list并对其中的每一个元素进行操作后,返回的也是list,需要unpack之后才能给datetime.date()函数使用;
  • 最后一点就是,要对string.split()函数里面的双引号进行转义,否则会报错。
参考链接:

=END=

声明: 除非注明,ixyzero.com文章均为原创,转载请以链接形式标明本文地址,谢谢!
https://ixyzero.com/blog/archives/3053.html

发表评论

电子邮件地址不会被公开。 必填项已用*标注