一、计算两个日期内的所有月

def get_month_interval(start_str, end_str):
    start_year, start_month = list(map(int, start_str.split('-')))
    end_year, end_month = list(map(int, end_str.split('-')))
    result = []
    for year in range(start_year, end_year + 1):
        year_str = str(year)
        if year == end_year and year == start_year:  # 当前年份 =结束年份 and 当前年份 = 起始年份
            for month in range(start_month, end_month):
                date_str = year_str + '-' + str(month)
                result.append(date_str)
        elif year < end_year and year == start_year:  # 当前年份<结束年份 and 当前年份 = 起始年份
            for month in range(start_month, 13):
                date_str = year_str + '-' + str(month)
                result.append(date_str)
        elif year < end_year and year != start_year:  # 当前年份<结束年份 and 当前年份 != 起始年份
            for month in range(1, 13):
                date_str = year_str + '-' + str(month)
                result.append(date_str)
        else:  # 当前年份 = 结束年份 and 当前年份 != 起始年份
            for month in range(1, end_month + 1):
                date_str = year_str + '-' + str(month)
                result.append(date_str)
    return result

测试结果如下:

>>> get_month_interval('2015-11','2016-2')
['2015-11', '2015-12', '2016-1', '2016-2']

二、计算两个日期之间的差值

def get_date_diff(start_str, end_str):
    import datetime
    start = datetime.datetime.strptime(start_str, '%Y-%m-%d %H:%M:%S.%f')
    end = datetime.datetime.strptime(end_str, '%Y-%m-%d %H:%M:%S.%f')
    diff = end - start
    # 相差天数
    print('相差天数:', diff.days)
    # 相差秒数
    print('相差秒数:', diff.seconds)
    # 相差微秒数
    print('相差微秒数:', diff.microseconds)

测试结果如下:

>>> get_date_diff('2016-1-25 23:59:59.100','2016-2-27 22:58:58.50')
相差天数: 32
相差秒数: 82739
相差微秒数: 400000

三、计算当前时间延后指定时间的日期

>>> compute_date(days=1,weeks=2)
2016-11-19 15:24:41.203940
2016-12-04 15:24:41.203940

测试结果如下:

#计算经过两周一天之后的日期
>>> compute_date(days=1,weeks=2)
2016-11-19 15:24:41.203940
2016-12-04 15:24:41.203940

四、时间日期格式化符号

%y 两位数的年份表示(00-99)
%Y 四位数的年份表示(000-9999)
%m 月份(01-12)
%d 月内中的一天(0-31)
%H 24小时制小时数(0-23)
%I 12小时制小时数(01-12) 
%M 分钟数(00=59)
%S 秒(00-59)
%f  毫秒(小数点后6位)

%a 本地简化星期名称
%A 本地完整星期名称
%b 本地简化的月份名称
%B 本地完整的月份名称
%c 本地相应的日期表示和时间表示
%j 年内的一天(001-366)
%p 本地A.M.或P.M.的等价符
%U 一年中的星期数(00-53)星期天为星期的开始
%w 星期(0-6),星期天为星期的开始
%W 一年中的星期数(00-53)星期一为星期的开始
%x 本地相应的日期表示
%X 本地相应的时间表示
%Z 当前时区的名称
%% %号本身

五、相关模块

datetime模块

•datetime.date:表示日期的类。常用的属性有year, month, day; 
•datetime.time:表示时间的类。常用的属性有hour, minute, second, microsecond; 
•datetime.datetime:表示日期时间。 
•datetime.timedelta:表示时间间隔,即两个时间点之间的长度。 
•datetime.tzinfo:与时区有关的相关信息。(这里不详细充分讨论该类,感兴趣的童鞋可以参考python手册) 
注:上面这些类型的对象都是不可变(immutable)的。

date类 
date类表示一个日期。日期由年、月、日组成(地球人都知道~~)。date类的构造函数如下: 

class datetime.date(year, month, day):参数的意义就不多作解释了,只是有几点要注意一下: 

•year的范围是[MINYEAR, MAXYEAR],即[1, 9999]; 
•month的范围是[1, 12]。(月份是从1开始的,不是从0开始的~_~); 
•day的最大值根据给定的year, month参数来决定。例如闰年2月份有29天; 
date类定义了一些常用的类方法与类属性,方便我们操作: 

•date.max、date.min:date对象所能表示的最大、最小日期; 
•date.resolution:date对象表示日期的最小单位。这里是天。 
•date.today():返回一个表示当前本地日期的date对象; 
•date.fromtimestamp(timestamp):根据给定的时间戮,返回一个date对象; 
•datetime.fromordinal(ordinal):将Gregorian日历时间转换为date对象;(Gregorian Calendar:一种日历表示方法,类似于我国的农历,西方国家使用比较多,此处不详细展开讨论。)

date提供的实例方法和属性: 

•date.year、date.month、date.day:年、月、日; 
•date.replace(year, month, day):生成一个新的日期对象,用参数指定的年,月,日代替原有对象中的属性。(原有对象仍保持不变) 
•date.timetuple():返回日期对应的time.struct_time对象; 
•date.toordinal():返回日期对应的Gregorian Calendar日期; 
•date.weekday():返回weekday,如果是星期一,返回0;如果是星期2,返回1,以此类推; 
•data.isoweekday():返回weekday,如果是星期一,返回1;如果是星期2,返回2,以此类推; 
•date.isocalendar():返回格式如(year,month,day)的元组; 
•date.isoformat():返回格式如'YYYY-MM-DD'的字符串; 
•date.strftime(fmt):自定义格式化字符串。在下面详细讲解。

python 日期计算案例的更多相关文章

  1. python 日期相关的各种操作总结

    用 Python 做项目时,经常会遇到与日期转换相关,日期计算相关的功能,动不动就要去查python手册,感觉麻烦,因此把自己常用的一些东西,总结了一下,总体说来到目前为止遇到如下一些需求: 1. 用 ...

  2. Python日期时间函数处理

    所有日期.时间的 api 都在datetime模块内. 1 日期的格式化输出 datetime => string import datetime now = datetime.datetime ...

  3. Python 日期和时间(转)

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

  4. (转)Python 日期和时间

    转自http://www.runoob.com/python/python-date-time.html Python 日期和时间 Python 程序能用很多方式处理日期和时间,转换日期格式是一个常见 ...

  5. windows下安装python科学计算环境,numpy scipy scikit ,matplotlib等

    安装matplotlib: pip install matplotlib 背景: 目的:要用Python下的DBSCAN聚类算法. scikit-learn 是一个基于SciPy和Numpy的开源机器 ...

  6. java日期比较,日期计算

    版权声明:本文为楼主原创文章,未经楼主允许不得转载,如要转载请注明来源. 都是常用的日期之间的比较方法,供以后参考. 热身:获取当前时间 SimpleDateFormat df = new Simpl ...

  7. python模块使用案例

    python模块使用案例 一.使用MySQLdb模块代码示例: # 导入 MySQLdb模块 import MySQLdb # 和服务器建立链接,host是服务器ip,我的MySQL数据库搭建在本机, ...

  8. CCF真题之日期计算

    201509-2 日期计算 问题描述 给定一个年份y和一个整数d,问这一年的第d天是几月几日? 注意闰年的2月有29天.满足下面条件之一的是闰年: 1) 年份是4的整数倍,而且不是100的整数倍: 2 ...

  9. Python TF-IDF计算100份文档关键词权重

    上一篇博文中,我们使用结巴分词对文档进行分词处理,但分词所得结果并不是每个词语都是有意义的(即该词对文档的内容贡献少),那么如何来判断词语对文档的重要度呢,这里介绍一种方法:TF-IDF. 一,TF- ...

随机推荐

  1. 实战MEF(2):导出&amp;导入

    上一文中,我们大致明白了,利用MEF框架实现自动扫描并组装扩展组件的思路.本文我们继续前进,从最初的定义公共接口开始,一步步学会如何使用MEF. 在上一文中我们知道,对于每一个实现了公共规范的扩展组件 ...

  2. angular中的MVVM模式

    在开始介绍angular原理之前,我们有必要先了解下mvvm模式在angular中运用.虽然在angular社区一直将angular统称为前端MVC框架,同时angular团队也称它为MVW(What ...

  3. Java 9.10习题

    <1>设计4个线程对象,两个线程执行减操作,两个线程执行加操作 //================================================= // File Na ...

  4. DOM &ndash; (w3school)1.DOM 方法 + 2.DOM属性 + 3.DOM 元素

      1.DOM 方法   一些 DOM 对象方法 这里提供一些您将在本教程中学到的常用方法: 方法 描述 getElementById() 返回带有指定 ID 的元素. getElementsByTa ...

  5. js事件绑定细节说明

    javascript绑定事件: 经常用jQuery去写,时间长了对原生态的js事件绑定的知识会慢慢淡化或者遗忘了,必须翻出来再次总结,今天再次把js原生态事件的处理做个总结. 从最初开始,谁刚接触ja ...

  6. POJ 2955 Brackets(区间DP)

    题目链接 #include <iostream> #include <cstdio> #include <cstring> #include <vector& ...

  7. 关于Navigation的BarButtonItem的

    (ios6.1)有两个controller在navigation stack里,A和B.A是B的previous view controller,现在top-level controller是B.要自 ...

  8. HTML中head里的内容经浏览器解析后全到body里

    我从linux服务器nginx上把一个网站迁移到windows的IIS上数据什么的都么有问题,配置好rewrite以后,访问网站,发现样式变动了,网站上方空出了一块我用chrome浏览器的审查元素一看 ...

  9. 就是要你明白机器学习系列--决策树算法之悲观剪枝算法(PEP)

    前言 在机器学习经典算法中,决策树算法的重要性想必大家都是知道的.不管是ID3算法还是比如C4.5算法等等,都面临一个问题,就是通过直接生成的完全决策树对于训练样本来说是“过度拟合”的,说白了是太精确 ...

  10. 如何关闭ie9烦人的提示信息?

    ①Q:如何关闭“IE 限制活动内容”的提示? A:去掉“IE 限制活动内容”的提示: 1. 找到IE的“Internet选项”: 2. 选择“高级”选项卡: 3. 在“设置”下,找到子标题“安全”,将 ...