• python操作日期和时间


    1.获取当前时间对应的数字

    """
    开发程序时,经常需要获取两个代码位置在执行时的时间差,比如,想知道某个函数执行大概耗费了多少时间,就可以使用time.time()来做。
    """
    import time
    
    def func1():
        s = 0
        for i in range(1,9999):
            if i % 2 == 0:
                s += i
            else:
                s -= i
    # time.time() 会返回 从 1970年1月1日0点(所谓的epoch时间点) 到 当前时间的 经过的秒数 ,可以简称为秒数时间。 
    before = time.time()
    func1()
    after = time.time()
    
    print(f"调用func1,花费时间{after-before}")
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    调用func1,花费时间0.00690770149230957
    
    • 1

    2.指定格式字符串显示时间

    """
    以指定格式字符串显示时间,是非常常用的,比如日志里面的时间戳。
    """
    from datetime import datetime
    print(str(datetime.now()))
    
    # 指定输出的时间格式
    print(datetime.now().strftime('%Y-%m-%d && %H:%M:%S'))
    
    # 使用time库来格式化显示字符串
    print(time.strftime('%Y-%m-%d %H:%M:%S',time.localtime()) )
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    2022-11-13 21:11:43.697226`在这里插入代码片`
    2022-11-13 && 21:11:43
    2022-11-13 21:11:43
    
    • 1
    • 2
    • 3

    3.秒数时间转化为字符串表示

    """
    如果要将某个指定秒数时间(从epoch时间点开始计算),而不是当前时间,转化为字符串格式,可以这样写
    """
    print(time.localtime(1434502529))
    time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(1434502529)) 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    
    time.struct_time(tm_year=2015, tm_mon=6, tm_mday=17, tm_hour=8, tm_min=55, tm_sec=29, tm_wday=2, tm_yday=168, tm_isdst=0)
    '2015-06-17 08:55:29'
    
    • 1
    • 2
    • 3

    4.字符串时间转化为整数时间

    # 反过来,如果要将字符串指定的时间,转化为秒数时间,可以这样
    print(int(time.mktime(time.strptime('2015-08-01 23:59:59', '%Y-%m-%d %H:%M:%S'))))
    
    • 1
    • 2

    5.ISO格式 转化为 本地时间

    """
    有的时候,程序获取的时间是 ISO 8601 格式的字符串。
    比如:
    
    2008-09-03T20:56:35.450686+00:00
    
    2008-09-03T20:56:35.450686Z
    
    通过如下方法转化为 本地格式
    """
    
    import dateutil.parser
    
    # 字符串时间 转化为 datetime 对象
    dt = dateutil.parser.isoparse('2008-09-03T20:56:35.450686+00:00')
    
    # 转化为本地时区的 datetime 对象
    localdt = dt.astimezone(tz=None)
    # 产生本地格式 字符串
    localdt.strftime('%Y-%m-%d %H:%M:%S')
    
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    '2008-09-04 04:56:35'
    
    • 1

    6.获取某个时间 对应 的年月日时分秒数字

    # 要获取 当前时间 的 年、月、日、时、分、秒、星期几 对应的数字,可以使用datetime库
    from datetime import datetime
    print(datetime.now())
    
    print("年:",datetime.now().year)
    print("月:",datetime.now().month)
    print("日:",datetime.now().day)
    print("时:",datetime.now().hour)
    print("分:",datetime.now().minute)
    print("秒:",datetime.now().second)
    print("毫秒:",datetime.now().microsecond)
    print("星期几:",datetime.now().weekday())
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    2022-11-13 21:11:43.766226
    年: 2022
    月: 11
    日: 13
    时: 21
    分: 11
    秒: 43
    毫秒: 766226
    星期几: 6
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    7.获得指定时间字符串对应星期几

    # 如果要获取的是 某个指定时间,比如 “2018-6-24”,而不是当前时间,对应的星期几,使用 datetime类的 strptime方法,先产生对应的 datetime对象
    # 要计算出 2018年6月24日 是星期几 
    thatDay = "2018-6-24"
    from datetime import datetime
    # 先把字符串表示的日期转化为 datetime 对象
    theDay = datetime.strptime(thatDay, "%Y-%m-%d")
    #再获取星期几
    theDay.weekday()  
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    6
    
    • 1

    8.从某个时间点往前或者后推 一段时间

    """
    如果我们想知道,2018年6月24日 往后推120天,是什么日期?星期几?
    
    往前推120天,又是什么日期?星期几?
    """
    
    thatDay = "2018-6-24"
    from datetime import datetime,timedelta
    
    theDay = datetime.strptime(thatDay, "%Y-%m-%d").date()
    
    # 后推120天 就是 + timedelta(days=120)
    target = theDay + timedelta(days=120)
    
    print(target)
    print(target.weekday())
    
    # 前推120天 就是 - timedelta(days=120)
    target = theDay - timedelta(days=120)
    
    print(target)
    print(target.weekday())
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    2018-10-22
    0
    2018-02-24
    5
    
    • 1
    • 2
    • 3
    • 4

    9.获得指定日期那周的周一

    thatDay = "2018-6-28"
    from datetime import datetime,timedelta
    theDay = datetime.strptime(thatDay, "%Y-%m-%d").date()
    print(thatDay)
    # 这就是 2018-6-30 那一周的周一。用当前日期 减去星期几 就得到是星期一的日期
    weekMonday = theDay - timedelta(days=theDay.weekday())
    print(timedelta(days=theDay.weekday()))
    print(weekMonday)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    2018-6-28
    3 days, 0:00:00
    2018-06-25
    
    • 1
    • 2
    • 3

    10.获取某个月总共有多少天

    # 最方便的方法是使用 calendar 模块里面的 函数
    from calendar import monthrange
    # monthrange返回的是元组:第一个元素是指定月第一天是星期几;第二个元素是指定月有多少天
    mr = monthrange(2011, 2)
    
    # 得到2011年2月有多少天
    print(mr[1])
    print(mr)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    28
    (1, 28)
    
    • 1
    • 2
  • 相关阅读:
    网络安全—小白自学
    Jetty
    那些在开源世界顶半边天的女同胞们
    pytorch生成CAM热力图-单张图像
    分布式光伏管理系统具有什么功能?有推荐吗?
    快速傅里叶变换(FFT),离散傅里叶变换(DFT)
    ssm在线教学质量评价系统毕业设计源码141550
    Centos7安装KingBaseES9(人大金仓V9)
    Golang 和稀疏文件
    nuxt.js 进行项目重构-首页
  • 原文地址:https://blog.csdn.net/qq_42658739/article/details/127837608