zoukankan      html  css  js  c++  java
  • 日期和时间(datetime模块)

    前言:

    参考:https://blog.csdn.net/weixin_42232219/article/details/89838580

    在 python 中,datetime 是对日期数据进行处理的主要模块。

    datetime 是 python 标准库的一部分,这意味着你无须单独安装它。

    无论何时你需要用 python 处理日期数据,datetime 都能提供所需方法。

    一、datetime模块和类

    在 datetime 模块中,最重要也是最常用的对象就是 datetime 类。

    datetime   日期时间对象,常用的属性有year, month, day, hour,minute,second,microsecond

    date       日期对象, 常用的属性有year,month,day

    time  时间对象,hour,minute,second,microsecond

    timedelta    时间间隔,即两个时间点之间的长度

    二、获取当前日期与格式

    2.1获取当前日期时间。年月日时分秒

    from datetime import datetime
    #获取当前本地时间
    a=datetime.now()
    print('当前日期:',a)
    
    #获取当前世界时间
    b=datetime.utcnow()
    print('世界时间:',b)
    import datetime
    now = datetime.datetime.now()
    year = now.year
    month = now.month
    day = now.day
    hour = now.hour
    minute = now.minute
    second = now.second
    microsecond = now.microsecond
    
    
    
    print("now", now)
    print('year', year, 'month', month, 'day', day, 'hour', hour, 'minute', minute, 'second', second, 'microsecond', microsecond)

    2.2转化为datetime

    参考:https://www.cnblogs.com/qisq/p/7614398.html

    from datetime import datetime
    d=datetime.strptime('2017/9/30','%Y/%m/%d')
    e=datetime.strptime('2017年9月30日星期六','%Y年%m月%d日星期六')
    f=datetime.strptime('2017年9月30日星期六8时42分24秒','%Y年%m月%d日星期六%H时%M分%S秒')
    g=datetime.strptime('9/30/2017','%m/%d/%Y')
    h=datetime.strptime('9/30/2017 8:42:50 ','%m/%d/%Y %H:%M:%S ')
    print('d', d)
    print('e', e)
    print('f', f)
    print('g', g)
    print('h', h)

    2.3格式化日期

    格式化符号 含义
    %y 年份的后两位(00-99)
    %Y 四位数的年份表示(0000-9999)
    %m 月份(01-12)
    %d 月中的第几天(0-31)
    %H 24小时制小时数(0-23)
    %I 12小时制小时数(01-12)
     %M 分钟数(00-59) 
     %S 秒(00-59) 
     %j   %j 年内的一天(001-366) 
    %U  一年中的星期数(00-53)星期天为星期的开始
    %W 一年中的星期数(00-53)星期一为星期的开始
     %u ( 1-7),星期一为星期的开始
     %w ( 0-6),星期天为星期的开始
     %a 本地英文简化星期名称 (比如星期二为Tue)
     %A 本地英文完整星期名称 (比如星期二为Tuesday)
    %b  本地英文简化的月份名称
    %B  本地英文完整的月份名称
     %p   本地A.M.或P.M.的等价符

     

    2.4 strftime和strptime 

     strftime:str-format-time:标准化;将时间转化为字符串格式

     strptime:str-parse-time :作句法分析;将字符串转化为时间格式

    from datetime import datetime
    dt = datetime(2019, 1, 7, 21, 20, 25, 123456)
    dt_f1 = dt.strftime('%Y-%m-%d')
    dt_f2 = datetime.strftime(dt, '%Y-%m-%d')
    dt_p = datetime.strptime(dt_f1, '%Y-%m-%d')
    
    
    print(dt_f1)
    print(dt_f2)
    print(dt_p)

    2.5汉字化日期

    from datetime import datetime
    dt = datetime(2019, 1, 7, 21, 20, 25, 123456)
    s2 = dt.strftime('%Y{Y}%m{m}%d{d}%H{H}%M{H}%S{S}').format(Y='', m='', d='', H='', M='', S='')
    print(s2)

     2.6 timedelta

     一个timedalta对象代表了一个时间差,当两个datedatetime进行相减操作时会返回一个timedelta对象,或者,我们也可以手动对其进行实例化

    class datetime.timedelta([days[, seconds[, microseconds[, milliseconds[, minutes[, hours[, weeks]]]]]]])

    只有days是不能超出范围的,否则会抛出OverflowError异常

    import datetime
    
    dt = datetime.datetime(2019, 1, 7, 00, 20, 25, 123456)
    last_day = (dt-datetime.timedelta(days=1)).strftime("%Y-%m-%d")
    last_hour = (dt-datetime.timedelta(hours=1)).strftime("%H")
    
    print('last_day',last_day)
    print('last_hour',last_hour)

     2.7 求时间间隔和日期偏移

    from datetime import  datetime
    from datetime import timedelta
    
    
    def date_diff(start_time, end_time):
        # 求时间间隔
        # 思路 将字符串格式的日期转化为日期格式,相减即可
        # %Y-%m-%d为日期格式,其中的-可以用其他代替或者不写,但是要统一,同理后面的时分秒也一样;可以只计算日期,不计算时间。
        # start_time=time.strptime(start_time,"%Y-%m-%d %H:%M:%S")
        # end_time=time.strptime(end_time,"%Y-%m-%d %H:%M:%S")
        start_time = datetime.strptime(start_time, "%Y-%m-%d")
        end_time = datetime.strptime(end_time, "%Y-%m-%d")
        # 根据上面需要计算日期还是日期时间,来确定需要几个数组段。下标0表示年,小标1表示月,依次类推...
        # start_time=datetime.datetime(start_time[0],start_time[1],start_time[2],start_time[3],start_time[4],start_time[5])
        # end_time=datetime.datetime(end_time[0],end_time[1],end_time[2],end_time[3],end_time[4],end_time[5])
        # start_time = datetime.datetime(start_time[0], start_time[1], start_time[2])
        # end_time = datetime.datetime(end_time[0], end_time[1], end_time[2])
        # 返回两个变量相差的值,就是相差天数.返回的为数字。
        return (end_time - start_time).days
    
    
    # 求偏移时间
    def date_offset(date_start, offset):
        # 思路:将字符转转化为日期,和offset相加。在转化为字符串
        # 此时date_start是字符串格式,offset是int型格式
        # 需要将date_start 转换为日期格式
        date_start = datetime.strptime(date_start,'%Y-%m-%d').date()
        offset = timedelta(days=offset)
        # 在将日期格式转化为字符串格式.
        # date_end  = (date_start + offset).strftime('%Y-%m-%d')
        date_end = datetime.strftime(date_start + offset, '%Y-%m-%d')
        return date_end
    
    diff = date_diff('2019-11-01', '2019-12-09')
    date_end = date_offset('2019-11-20', 20)
    
    print(diff)
    print(date_end)

     

  • 相关阅读:
    053-1
    多项式ADT笔记(数据结构c版)
    052-188
    052-187
    052-186
    052-185
    052-184
    052-183
    052-182
    JS中的垃圾回收(GC)
  • 原文地址:https://www.cnblogs.com/qianslup/p/11822808.html
Copyright © 2011-2022 走看看