zoukankan      html  css  js  c++  java
  • &【27】Python datetime&time

    datetime 模块和 time 模块,这两个模块主要用于转换日期格式的功能。

    datetime模块

    datetime 模块是 Python 内置的功能模块,它可以实现对日期的算数运算,以指定的方式格式化日期。datetime 模块内含有一个同名的 datetime 类,该类中包含多个操作日期的函数,例如:datetime.now()、datetime.fromtimestamp()、datetime.timedelta()等,下面逐一举例说明。

    datetime()构造函数

    datetime 类提供了一个now()的方法可以获取当前日期和时间,还提供了带参数的构造函数datetime(),可以通过传入特定的数字返回不同的datetime 对象。例如:

    from datetime import datetime
    
    # 当前日期和时间
    print(datetime.now()) # 输出 2021-08-15 14:28:52.284660
    
    # 获取指定时间
    datetest = datetime(2019, 9, 30, 22, 22, 0)
    print(datetest) # 输出 2019-09-30 22:22:00
    
    # 获取日期的年月日时分秒
    print(str(datetest.year) + "-" + str(datetest.month) + "-" + str(datetest.day) + " " + str(datetest.hour) + ":" + str(
        datetest.minute) + ":" + str(datetest.second)) # 输出 2019-9-30 22:22:0
    

    fromtimestamp()函数

    fromtimestamp()函数可以将时间戳转换成 datetime 对象。例如:

    from datetime import datetime
    
    dt1 = datetime.fromtimestamp(10000)
    print(dt1)  # 输出 1970-01-01 10:46:40
    
    time = datetime.timestamp(datetime.now())  # 时间戳
    print(time)  # 输出 1629009265.078695
    
    dt2 = datetime.fromtimestamp(time)
    print(dt2)  # 输出 2021-08-15 14:34:25.078695

    strptime()和strftime()函数

    使用strptime()函数可以将日期字符串转换成 datetime 类型,strftime()函数可以将 datetime 类型转换成字符串。例如:

    from datetime import datetime
    
    # 日期转换
    datestr = datetime.strptime('2019-9-30 22:10:00', '%Y-%m-%d %H:%M:%S')
    now = datetime.now()
    print(datestr) # 输出 2019-09-30 22:10:00
    print(now.strftime('%a, %b %d %H:%M')) # 输出 Sun, Aug 15 14:35

    timedelta()函数

    timedelta()函数返回一个 timedelta 类型的数据,它表示一段时间而不是一个时刻,多用于日期的增加和减少场景。例如:

    import datetime
    
    # 日期增加和减少
    now = datetime.datetime.now()
    print(now)  # 2021-08-15 14:37:33.894494
    
    newdate = now + datetime.timedelta(hours=10)
    print(newdate)  # 2021-08-16 00:37:33.894494
    
    newdate = now - datetime.timedelta(days=1)
    print(newdate)  # 2021-08-14 14:37:33.894494

    time模块

    与 datetime 模块有所不同,time 模块主要功能是读取系统时钟的当前时间。其中,time.time() 和 time.sleep() 是两个最常用的模块。

    time()函数

    time.time() 函数返回的值是带小数点的,它表示从 Unix 纪元(1970年1月1日0点)到执行代码那一刻所经历的时间的秒数,这个数字称为UNIX纪元时间戳。例如:

    import time
    print ("当前时间戳为:", time.time())
    # 当前时间戳为: 1629009671.7269542

    在项目开发中,我们经常需要计算一段代码的执行时间,就可以用纪元时间戳来实现。例如:

    import time
    
    
    def calculate_time():
        item = 1
        for i in range(1, 100000):
            item = item + i
        return item
    
    
    startTime = time.time()
    result = calculate_time()
    endTime = time.time()
    print('计算结果:' + str(result))
    print('执行时间:' + str(endTime - startTime))
    
    # 输出
    # 计算结果:4999950001
    # 执行时间:0.011000633239746094

    在代码中,函数calculateTime()是需要执行的代码块,变量 startTime 表示开始时间,变量 endTime 表示结束时间,endTime-startTime表示代码块运行的间隔时间。

    sleep()函数

    如果需要让程序暂停一下,可以使用time.sleep()函数。sleep()函数有个参数,表示需要暂停的秒数。例如:

    import time
    
    for i in range(2):
        print('one')
        print(time.time())
        time.sleep(1)
        print('two')
        print(time.time())
        time.sleep(1)
    print('运行完成')
    
    # 输出
    # one
    # 1629009813.3680556
    # two
    # 1629009814.3681128
    # one
    # 1629009815.36817
    # two
    # 1629009816.3682272
    # 运行完成

    从上面程序的执行结果可以看出以下几点:

    1. 打印one和打印two之间每次都间隔了一秒,因为time.time()函数输出结果的精确度比较高,会存在些许误差。
    2. time.sleep()函数会阻塞代码,只有当time.sleep()中的秒数流逝后,才会执行后续代码
  • 相关阅读:
    tensorflow2.0 GPU和CPU 时间对比
    第一次使用FileZilla Server
    PremiumSoft Navicat 15 for Oracle中文破解版安装教程
    Unmapped Spring configuration files found. Please configure Spring facet or use 'Create Default Context' to add one including all unmapped files.
    ng : 无法加载文件 D: odejs ode_global g.ps1,因为在此系统上禁止运行脚本。有关详细信息,请参阅 https:/go.microsoft.com/fwlink/?LinkID=135170 中的 about_Execution_Policies。
    angular
    Github上优秀的go项目
    win10---file explore 中remove quick access folder
    react--useEffect使用
    linux---cat 和 grep 的妙用
  • 原文地址:https://www.cnblogs.com/doagain/p/15521738.html
Copyright © 2011-2022 走看看