• datetime模块


    主要记录下datetime类的一些用法,在碰到时间相关的运算时有个积累。
    timedelta对象表示两个不同的date或者time的持续时间,类似于一个时间间隔。

    class datetime.timedelta(days=0, seconds=0, microseconds=0, milliseconds=0, minutes=0, hours=0, weeks=0)
    

    类定义,有很多参数,不过内部存储的只有dayssecondsmicroseconds,从文档的介绍可以看出其他的都是通过这三个单位来换算的(当然这个也不是特别重要,也不一定准确),换算的方法:

    1毫秒 = 1000微妙
    一分钟 = 60秒
    一小时 = 3600秒
    一星期 = 7天
    

    从文档的这个换算方式也是印证了我的猜想。
    datetime类是datetime的合集:

    class datetime.datetime(year, month, day, hour=0, minute=0, second=0, microsecond=0, tzinfo=None)
    

    其中这些参数的范围是:

    MINYEAR <= year <= MAXYEAR 
    1 <= month <= 12 
    1 <= day <= number of days in the given month and year 
    0 <= hour < 24 
    0 <= minute < 60 
    0 <= second < 60 
    0 <= microsecond < 1000000 
    

    其中MINYEARMAXYEAR是常量,分别为1和9999
    如果超过了这些参数的范围会报ValueError错误。
    datetime对象的操作包含以下几种:

    datetime2 = datetime1 + timedelta 
    datetime2 = datetime1 - timedelta 
    timedelta = datetime1 - datetime2 
    datetime1 < datetime2
    

    下面一一记录:

    datetime2 = datetime1 + timedelta
    # 加3天 
    >>> now = datetime.now()
    >>> now
    datetime.datetime(2017, 6, 25, 20, 53, 40, 36492)
    >>> day = timedelta(days=3)
    >>> now + day
    datetime.datetime(2017, 6, 28, 20, 53, 40, 36492)
    # 加1年
    >>> days = timedelta(days=365)
    >>> now + days
    datetime.datetime(2018, 6, 25, 20, 53, 40, 36492)
    
    

    这里在timedelta对象上指定的参数是days,并没有year参数,如果指定了year或者years参数就会报错:

    >>> days = timedelta(year=1)
    Traceback (most recent call last):
    File "<stdin>", line 1, in <module>
    TypeError: 'year' is an invalid keyword argument for this function
    >>> days = timedelta(years=1)
    Traceback (most recent call last):
    File "<stdin>", line 1, in <module>
    TypeError: 'years' is an invalid keyword argument for this function
    

    这里需要注意的是datetime的不能超过各类对象的参数值得范围。

    # datetime2 = datetime1 - timedelta
    # 与相加是一样的。
    # timedelta = datetime1 - datetime2
    >>> now = datetime.now()
    >>> now1 = datetime.now()+ timedelta(days=3)
    >>> intervaldays = now1-now
    >>> intervaldays
    datetime.timedelta(3, 14, 538899)
    >>> intervaldays.days
    3
    >>> intervaldays.seconds
    14
    >>> intervaldays.microseconds
    538899
    

    比较两个datetime对象

    # datetime1 < datetime2
    >>> now1 > now
    True
    

    datetime有很多很有用的方法

    # weekday,isoweekday前者是星期一为0周日为6,后者是周一为1周日为7
    >>> datetime.weekday(now)
    6
    >>> datetime.isoweekday(now)
    7
    

    当然也可以按照datetime造中的参数名来显示相关的数据:

    >>> now.day
    25
    >>> now.year
    2017
    >>> now.minute
    0
    >>> now.second
    43
    >>> now.month
    6
    >>> now.hour
    21
    

    combine函数可以将datetime对象合并起来

    >>> d = date(2005, 7, 14)
    >>> t = time(12, 30)
    >>> datetime.combine(d, t)
    datetime.datetime(2005, 7, 14, 12, 30)
    
  • 相关阅读:
    一次闲聊
    苏活工厂团队
    《旅游网站针对‘途牛’、‘驴妈妈’的分析报告》
    C# 委托学习
    你进度太慢了
    我一个哥们经典语录
    SharePoint开发学习笔记3——Visual Web Part及自定义配置界面
    Asp.net使用JQuery实现评论的无刷新分页及分段延迟加载效果
    SharePoint开发学习笔记2——对象模型概述
    flash文件转html5工具
  • 原文地址:https://www.cnblogs.com/jiumo/p/12598973.html
Copyright © 2020-2023  润新知