Python学习:time模块,datetime 模块

系统 1492 0

计算机的系统时钟设置为特定的日期、时间和时区。内置的 time 模块让 Python程序能读取系统时钟的当前时间。在 time 模块中, time.time()和 time.sleep()函数是最有用的模块。

time模块

time.time()函数

Unix 纪元是编程中经常参考的时间: 1970 年 1 月 1 日 0 点,即协调世界时( UTC)。 time.time()函数 返回自那一刻以来的秒数,是一个浮点值(回想一下,浮点值只是一个带小数点的数)。这个数字称为 UNIX 纪元时间戳。


纪元时间戳可以用于剖析代码,也就是测量一段代码的运行时间。如果在代码块开始时调用time.time(), 并在结束时再次调用,就可以用第二个时间戳减去第一个,得到这两次调用之间经过的时间。


            
              
                import
              
               time

              
                def
              
              
                calcProd
              
              
                (
              
              
                )
              
              
                :
              
              
                # Calculate the product of the first 100,000 numbers.
              
              
    product 
              
                =
              
              
                1
              
              
                for
              
               i 
              
                in
              
              
                range
              
              
                (
              
              
                1
              
              
                ,
              
              
                100000
              
              
                )
              
              
                :
              
              
        product 
              
                =
              
               product 
              
                *
              
               i
    
              
                return
              
               product
startTime 
              
                =
              
               time
              
                .
              
              time
              
                (
              
              
                )
              
              
prod 
              
                =
              
               calcProd
              
                (
              
              
                )
              
              
endTime 
              
                =
              
               time
              
                .
              
              time
              
                (
              
              
                )
              
              
                print
              
              
                (
              
              
                'The result is %s digits long.'
              
              
                %
              
              
                (
              
              
                len
              
              
                (
              
              
                str
              
              
                (
              
              prod
              
                )
              
              
                )
              
              
                )
              
              
                )
              
              
                print
              
              
                (
              
              
                'Took %s seconds to calculate.'
              
              
                %
              
              
                (
              
              endTime 
              
                -
              
               startTime
              
                )
              
              
                )
              
            
          
            
              输出:
The result is 456569 digits long.
Took 10.653937101364136 seconds to calculate.

            
          

time.sleep()函数

如果需要让程序暂停一下,就调用 time.sleep()函数,并传入希望程序暂停的秒数

            
              
                >>
              
              
                >
              
              
                import
              
               time

              
                >>
              
              
                >
              
              
                for
              
               i 
              
                in
              
              
                range
              
              
                (
              
              
                3
              
              
                )
              
              
                :
              
              
                print
              
              
                (
              
              
                'Tick'
              
              
                )
              
              
		time
              
                .
              
              sleep
              
                (
              
              
                1
              
              
                )
              
              
                print
              
              
                (
              
              
                'Tock'
              
              
                )
              
              
		time
              
                .
              
              sleep
              
                (
              
              
                1
              
              
                )
              
            
          

time.gmtime([secs])

将 seconds since the epoch 为单位的时间转换为UTC的 struct_time ,其中dst标志始终为零。如果未提供 secs 或为 None ,则使用由 time() 返回的当前时间。忽略一秒的分数。

time.localtime([secs])

与 gmtime() 相似但转换为当地时间。如果未提供 secs 或为 None ,则使用由 time() 返回的当前时间。当 DST 适用于给定时间时,dst标志设置为 1 。
localtime([seconds]) -> (tm_year,tm_mon,tm_mday,tm_hour,tm_min, tm_sec,tm_wday,tm_yday,tm_isdst)

            
              
                import
              
               time

t
              
                =
              
              time
              
                .
              
              localtime
              
                (
              
              
                )
              
              
                print
              
              
                (
              
              
                '年:%s\t月:%s\t日:%s'
              
              
                %
              
              
                (
              
              t
              
                .
              
              tm_year
              
                ,
              
              t
              
                .
              
              tm_mon
              
                ,
              
              t
              
                .
              
              tm_mday
              
                )
              
              
                )
              
              
输出:
年:
              
                2019
              
              	月:
              
                6
              
              	日:
              
                19
              
            
          

strftime(format[, tuple]) -> string:
将结构化时间转化为字符串时间

  • format:为格式化的时间格式,
  • p_tuple为格式化时间
            
              
                print
              
              
                (
              
              time
              
                .
              
              strftime
              
                (
              
              
                '%Y-%m-%d'
              
              
                ,
              
              time
              
                .
              
              localtime
              
                (
              
              
                )
              
              
                )
              
              
                )
              
              
输出:
              
                2019
              
              
                -
              
              
                06
              
              
                -
              
              
                19
              
            
          

Python学习:time模块,datetime 模块_第1张图片
strptime(string, format) -> struct_time
字符串时间转化为格式化时间

            
              
                #------将字符串时间转成结构化时间strptime
              
              
                print
              
              
                (
              
              time
              
                .
              
              strptime
              
                (
              
              
                "2016:12:24:17:50:36"
              
              
                ,
              
              
                "%Y:%m:%d:%X"
              
              
                )
              
              
                )
              
            
          

asctime([tuple]) -> string
When the time tuple is not present, current time as returned by localtime()

ctime(seconds) -> string

            
              
                print
              
              
                (
              
              time
              
                .
              
              asctime
              
                (
              
              
                )
              
              
                )
              
              
                print
              
              
                (
              
              time
              
                .
              
              ctime
              
                (
              
              
                )
              
              
                )
              
              
输出:
Wed Jun 
              
                19
              
              
                16
              
              
                :
              
              
                05
              
              
                :
              
              
                21
              
              
                2019
              
              
Wed Jun 
              
                19
              
              
                16
              
              
                :
              
              
                05
              
              
                :
              
              
                21
              
              
                2019
              
            
          

了解更多,请参考官方文档

datetime 模块

time 模块用于取得 Unix 纪元时间戳,并加以处理。但是,如果以更方便的格式显示日期,或对日期进行算术运算(例如,搞清楚 205 天前是什么日期,或 123天后是什么日期),就应该使用 atetime 模块。
datetime 模块有自己的 datetime 数据类型。 datetime 值表示一个特定的时刻。

            
              
                >>
              
              
                >
              
              
                import
              
               datetime

              
                >>
              
              
                >
              
               datetime
              
                .
              
              datetime
              
                .
              
              now
              
                (
              
              
                )
              
              
datetime
              
                .
              
              datetime
              
                (
              
              
                2015
              
              
                ,
              
              
                2
              
              
                ,
              
              
                27
              
              
                ,
              
              
                11
              
              
                ,
              
              
                10
              
              
                ,
              
              
                49
              
              
                ,
              
              
                55
              
              
                ,
              
              
                53
              
              
                )
              
              
                >>
              
              
                >
              
               dt 
              
                =
              
               datetime
              
                .
              
              datetime
              
                (
              
              
                2015
              
              
                ,
              
              
                10
              
              
                ,
              
              
                21
              
              
                ,
              
              
                16
              
              
                ,
              
              
                29
              
              
                ,
              
              
                0
              
              
                )
              
              
                >>
              
              
                >
              
               dt
              
                .
              
              year
              
                ,
              
               dt
              
                .
              
              month
              
                ,
              
               dt
              
                .
              
              day

              
                (
              
              
                2015
              
              
                ,
              
              
                10
              
              
                ,
              
              
                21
              
              
                )
              
              
                >>
              
              
                >
              
               dt
              
                .
              
              hour
              
                ,
              
              dt
              
                .
              
              minute
              
                ,
              
               dt
              
                .
              
              second

              
                (
              
              
                16
              
              
                ,
              
              
                29
              
              
                ,
              
              
                0
              
              
                )
              
            
          

调用 datetime.datetime.now() 返回一个 datetime 对象,表示当前的日期和时间,根据你的计算机的时钟。这个对象包含当前时刻的年、月、日、时、分、秒和微秒。也可以利用 datetime.datetime()函数 ,向它传入代表年、月、日、时、分、秒的整数,得到特定时刻的 datetime 对象。这些整数将保存在 datetime 对象的 year、month、 day、 hour、 minute 和 second属性中。
Unix 纪元时间戳可以通过 datetime.datetime.fromtimestamp() 转换为 datetime对象。 datetime 对象的日期和时间将根据本地时区转换。

            
              
                >>
              
              
                >
              
               datetime
              
                .
              
              datetime
              
                .
              
              fromtimestamp
              
                (
              
              
                1000000
              
              
                )
              
              
datetime
              
                .
              
              datetime
              
                (
              
              
                1970
              
              
                ,
              
              
                1
              
              
                ,
              
              
                12
              
              
                ,
              
              
                5
              
              
                ,
              
              
                46
              
              
                ,
              
              
                40
              
              
                )
              
              
                >>
              
              
                >
              
               datetime
              
                .
              
              datetime
              
                .
              
              fromtimestamp
              
                (
              
              time
              
                .
              
              time
              
                (
              
              
                )
              
              
                )
              
              
datetime
              
                .
              
              datetime
              
                (
              
              
                2015
              
              
                ,
              
              
                2
              
              
                ,
              
              
                27
              
              
                ,
              
              
                11
              
              
                ,
              
              
                13
              
              
                ,
              
              
                0
              
              
                ,
              
              
                604980
              
              
                )
              
            
          

timedelta 数据类型

datetime 模块还提供了 timedelta 数据类型,它表示一段时间,而不是一个时刻。

            
              
                >>
              
              
                >
              
               delta 
              
                =
              
               datetime
              
                .
              
              timedelta
              
                (
              
              days
              
                =
              
              
                11
              
              
                ,
              
               hours
              
                =
              
              
                10
              
              
                ,
              
               minutes
              
                =
              
              
                9
              
              
                ,
              
               seconds
              
                =
              
              
                8
              
              
                )
              
              
                >>
              
              
                >
              
               delta
              
                .
              
              days
              
                ,
              
               delta
              
                .
              
              seconds
              
                ,
              
               delta
              
                .
              
              microseconds

              
                (
              
              
                11
              
              
                ,
              
              
                36548
              
              
                ,
              
              
                0
              
              
                )
              
              
                >>
              
              
                >
              
               delta
              
                .
              
              total_seconds
              
                (
              
              
                )
              
              
                986948.0
              
              
                >>
              
              
                >
              
              
                str
              
              
                (
              
              delta
              
                )
              
              
                '11 days, 10:09:08'
              
            
          

创建 timedelta 对象 ,就用 datetime.timedelta()函数 。 datetime.timedelta()函数接受关键字参数 weeks、 days、 hours、 minutes、 seconds、 milliseconds 和 microseconds。没有 month 和 year 关键字参数,因为“月”和“年”是可变的时间,依赖于特定月份或年份。 timedelta 对象拥有的总时间以天、秒、微秒来表示。这些数字分别保存在 days、 seconds 和 microseconds 属性中。 total_seconds()方法返回只以秒表示的时间。将一个 timedelta 对象传入 str(),将返回格式良好的、人类可读的字符串表示。

将 datetime 对象转换为字符串

Unix 纪元时间戳和 datetime 对象对人类来说都不是很友好可读。利用 strftime()方法 ,可以将 datetime 对象显示为字符串。(strftime()函数名中的 f 表示格式, format)。
Python学习:time模块,datetime 模块_第2张图片
向 strftime()传入一个定制的格式字符串,其中包含格式化指定(以及任何需要的斜线、冒号等), strftime()将返回一个格式化的字符串,表示 datetime 对象的信息。

            
              
                >>
              
              
                >
              
               oct21st 
              
                =
              
               datetime
              
                .
              
              datetime
              
                (
              
              
                2015
              
              
                ,
              
              
                10
              
              
                ,
              
              
                21
              
              
                ,
              
              
                16
              
              
                ,
              
              
                29
              
              
                ,
              
              
                0
              
              
                )
              
              
                >>
              
              
                >
              
               oct21st
              
                .
              
              strftime
              
                (
              
              
                '%Y/%m/%d %H:%M:%S'
              
              
                )
              
              
                '2015/10/21 16:29:00'
              
              
                >>
              
              
                >
              
               oct21st
              
                .
              
              strftime
              
                (
              
              
                '%I:%M %p'
              
              
                )
              
              
                '04:29 PM'
              
              
                >>
              
              
                >
              
               oct21st
              
                .
              
              strftime
              
                (
              
              
                "%B of '%y"
              
              
                )
              
              
                "October of '15"
              
            
          

将字符串转换成 datetime 对象

如果有一个字符串的日期信息,如’2015/10/21 16:29:00’或’October 21, 2015’,需要将它转换为 datetime 对象,就用 datetime.datetime.strptime()函数。 strptime()函数 与strftime()方法相反。定制的格式字符串使用相同的指令,像 strftime()一样。必须将格式字符串传入 strptime(),这样它就知道如何解析和理解日期字符串( strptime()函数名中 p 表示解析, parse)。

            
              
                >>
              
              
                >
              
               datetime
              
                .
              
              datetime
              
                .
              
              strptime
              
                (
              
              
                'October 21, 2015'
              
              
                ,
              
              
                '%B %d, %Y'
              
              
                )
              
              
datetime
              
                .
              
              datetime
              
                (
              
              
                2015
              
              
                ,
              
              
                10
              
              
                ,
              
              
                21
              
              
                ,
              
              
                0
              
              
                ,
              
              
                0
              
              
                )
              
              
                >>
              
              
                >
              
               datetime
              
                .
              
              datetime
              
                .
              
              strptime
              
                (
              
              
                '2015/10/21 16:29:00'
              
              
                ,
              
              
                '%Y/%m/%d %H:%M:%S'
              
              
                )
              
              
datetime
              
                .
              
              datetime
              
                (
              
              
                2015
              
              
                ,
              
              
                10
              
              
                ,
              
              
                21
              
              
                ,
              
              
                16
              
              
                ,
              
              
                29
              
              
                )
              
              
                >>
              
              
                >
              
               datetime
              
                .
              
              datetime
              
                .
              
              strptime
              
                (
              
              
                "October of '15"
              
              
                ,
              
              
                "%B of '%y"
              
              
                )
              
              
datetime
              
                .
              
              datetime
              
                (
              
              
                2015
              
              
                ,
              
              
                10
              
              
                ,
              
              
                1
              
              
                ,
              
              
                0
              
              
                ,
              
              
                0
              
              
                )
              
              
                >>
              
              
                >
              
               datetime
              
                .
              
              datetime
              
                .
              
              strptime
              
                (
              
              
                "November of '63"
              
              
                ,
              
              
                "%B of '%y"
              
              
                )
              
              
datetime
              
                .
              
              datetime
              
                (
              
              
                2063
              
              
                ,
              
              
                11
              
              
                ,
              
              
                1
              
              
                ,
              
              
                0
              
              
                ,
              
              
                0
              
              
                )
              
            
          

更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论