%a%b" />

亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

Python時間模塊小結(time and datetime)

系統 1519 0

表示時間的三種方式

在Python中,通常有三種方式表示時間:時間戳,元祖(struct_time),格式化時間字符串。

  1. 時間戳(timestamp):1970年1月1日00:00:00開始按秒計算的偏移量,type(time.time())??? float類型
  2. 格式化時間字符串(Format String):'1999-12-06'
  3. 時間元組(stuct_time):共有9個元素(年月日時分秒,一年中的第幾周,一年中第幾天等)

幾種時間格式的轉換

Python時間模塊小結(time and datetime)_第1張圖片

?

            
              #結構化時間 --> %a %b %d %H:%M:%S %Y串
#time.asctime(結構化時間) 如果不傳參數,直接返回當前時間的格式化串
>>>time.asctime(time.localtime(1500000000))
'Fri Jul 14 10:40:00 2017'
>>>time.asctime()
'Mon Jul 24 15:18:33 2017'

#時間戳 --> %a %b %d %H:%M:%S %Y串
#time.ctime(時間戳)  如果不傳參數,直接返回當前時間的格式化串
>>>time.ctime()
'Mon Jul 24 15:19:07 2017'
>>>time.ctime(1500000000)
'Fri Jul 14 10:40:00 2017'?
            
          

Python時間模塊小結(time and datetime)_第2張圖片

一:經常使用的時間方法

1.得到當前時間

            
              使用time模塊,首先得到當前的時間戳
In [42]: time.time()
Out[42]: 1408066927.208922

將時間戳轉換為時間元組 struct_time
In [43]: time.localtime(time.time())
Out[43]: time.struct_time(tm_year=2014, tm_mon=8, tm_mday=15, tm_hour=9, tm_min=42, tm_sec=20, tm_wday=4, tm_yday=227, tm_isdst=0)

格式化輸出想要的時間
In [44]: time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time()))
Out[44]: '2014-08-15 09:43:04'

接上文,不加參數時,默認就是輸出當前的時間
In [48]: time.strftime('%Y-%m-%d %H:%M:%S')
Out[48]: '2014-08-15 09:46:53’

當然也可以透過datetime模塊來實現,如下:
In [68]: t = time.time()
In [69]: datetime.datetime.fromtimestamp(t).strftime('%Y-%m-%d %H:%M:%S')
Out[69]: '2014-08-15 10:04:51’

同時,也可以只使用datetime模塊
In [46]: datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')
Out[46]: '2014-08-15 09:45:27’
In [47]: datetime.datetime.today().strftime('%Y-%m-%d %H:%M:%S')
Out[47]: '2014-08-15 09:46:10'

2.獲取時間差,計算程序的執行時間等:

            
          
            
              使用time模塊:
In [75]: def t():
   ....:     start = time.time()
   ....:     time.sleep(10)
   ....:     end = time.time()
   ....:     print end - start
   ....:

In [76]: t()
10.0014948845

使用datetime模塊:
In [49]: starttime = datetime.datetime.now()
In [50]: endtime = datetime.datetime.now()
In [51]: print (endtime - starttime).seconds
6
            
          

3.計算昨天的日期(發散思維,計算其他日期相加、相減等):

            
              In [52]: d1 = datetime.datetime.now()
In [53]: d2 = d1 - datetime.timedelta(days=1)
In [54]: d1
Out[54]: datetime.datetime(2014, 8, 15, 9, 54, 10, 68665)
In [55]: d2
Out[55]: datetime.datetime(2014, 8, 14, 9, 54, 10, 68665)
            
            

4.時間元組 struct_time轉化為時間戳
          
            
              In [56]: datetime.datetime.now()
Out[56]: datetime.datetime(2014, 8, 15, 9, 57, 52, 779893)

In [57]: datetime.datetime.now().timetuple()
Out[57]: time.struct_time(tm_year=2014, tm_mon=8, tm_mday=15, tm_hour=9, tm_min=58, tm_sec=12, tm_wday=4, tm_yday=227, tm_isdst=-1)

In [58]: time.mktime(datetime.datetime.now().timetuple())
Out[58]: 1408067904.0
            
            


5.strptime也挺有用的,將時間字符串轉換為時間元組struct_time
          
            
              In [73]: time.strftime('%Y-%m-%d %H:%M:%S')
Out[73]: '2014-08-15 10:27:36'

In [74]: time.strptime('2014-08-15 10:27:36','%Y-%m-%d %H:%M:%S')
Out[74]: time.struct_time(tm_year=2014, tm_mon=8, tm_mday=15, tm_hour=10, tm_min=27, tm_sec=36, tm_wday=4, tm_yday=227, tm_isdst=-1)
            
          

##二:time和datetime模塊常用方法簡介

表示時間的兩種方式:

            
              1. 時間戳(相對于1970.1.1 00:00:00以秒計算的偏移量),時間戳是惟一的
2. 時間元組 即(struct_time),共有九個元素,分別表示,同一個時間戳的struct_time會因為時區不同而不同
            
          

time 模塊常用方法小記

1.time.clock()

            
              這個需要注意,在不同的系統上含義不同。在UNIX系統上,它返回的是“進程時間”,它是用秒表示的浮點數(時間 戳)。而在WINDOWS中,第一次調用,返回的是進程運行的實際時間。而第二次之后的調用是自第一次調用以后到現在的運行時間。(實際上是以WIN32 上QueryPerformanceCounter()為基礎,它比毫秒表示更為精確)

budong@budongdeMacBook-Pro:/tmp$ cat clock.py
#!/usr/bin/env python
import time
if __name__ == '__main__':
    time.sleep(1)
    print "clock1:%s" % time.clock()
    time.sleep(1)
    print "clock2:%s" % time.clock()
    time.sleep(1)
    print "clock3:%s" % time.clock()

運行腳本:
budong@budongdeMacBook-Pro:/tmp$ ./clock.py
clock1:0.059173
clock2:0.059299
clock3:0.059416
            
          

2.time.sleep(secs)

            
              線程推遲指定的時間運行
適合放在腳本里,定時sleep一會然后繼續干啥

In [138]: while True:
   .....:     time.sleep(3)
   .....:     print time.strftime('%H:%M:%S')
   .....:
17:21:35
17:21:38
17:21:41
17:21:44
……
            
          

3.time.localtime([secs])

            
              將一個時間戳轉換成一個當前時區的struct_time,如果seconds參數未輸入,則以當前時間為轉換標準
未提供secs參數時,按當前時間為準
In [141]: time.localtime()
Out[141]: time.struct_time(tm_year=2014, tm_mon=8, tm_mday=14, tm_hour=17, tm_min=23, tm_sec=48, tm_wday=3, tm_yday=226, tm_isdst=0)

提供secs為當前時間戳時
In [142]: time.time()
Out[142]: 1408008232.217969
In [143]: time.localtime(time.time())
Out[143]: time.struct_time(tm_year=2014, tm_mon=8, tm_mday=14, tm_hour=17, tm_min=24, tm_sec=2, tm_wday=3, tm_yday=226, tm_isdst=0)
            
          

4.time.strftime(format[, t])

            
              將指定的struct_time(默認為當前時間),根據指定的格式化字符串輸出
t未指定,傳入time.localtime()作為默認參數:
In [156]: time.strftime('%Y-%m-%d %H:%M:%S')
Out[156]: '2014-08-14 17:28:16’

指定t為time.localtime(1407945600.0)時:
In [157]: time.localtime(1407945600.0)
Out[157]: time.struct_time(tm_year=2014, tm_mon=8, tm_mday=14, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=3, tm_yday=226, tm_isdst=0)

In [158]: time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(1407945600.0))
Out[158]: '2014-08-14 00:00:00’
            
          

5.time.time()

            
              返回當前時間的時間戳
In [161]: time.time()
Out[161]: 1408008711.730218


            
          

6.time.mktime(t)

            
              將一個struct_time轉換為時間戳,如下time.localtime接收一個時間戳返回一個struct_time,而time.mktime接收一個struct_time,返回一個時間戳
In [159]: time.localtime(1407945600.0)
Out[159]: time.struct_time(tm_year=2014, tm_mon=8, tm_mday=14, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=3, tm_yday=226, tm_isdst=0)
In [160]: time.mktime(time.localtime(1407945600.0))
Out[160]: 1407945600.0

殘陽似血的博客:
              
               

官方time模塊:
              
            
          

##datetime 模塊常用方法小記

datetime模塊常用的主要有下面這四個類:

            
              1. datetime.date: 是指年月日構成的日期(相當于日歷)
2. datetime.time: 是指時分秒微秒構成的一天24小時中的具體時間(相當于手表)
3. datetime.datetime: 上面兩個合在一起,既包含時間又包含日期
4. datetime.timedelta: 時間間隔對象(timedelta)。一個時間點(datetime)加上一個時間間隔(timedelta)可以得到一個新的時間點(datetime)。比如今天的上午3點加上5個小時得到今天的上午8點。同理,兩個時間點相減會得到一個時間間隔。
            
          

1.datetime.date 類

            
              1.新建一個date對象,日期為今天,既可以直接調用datetime.date.today(),也可以直接向datetime.date()傳值,如下:
In [4]: today = datetime.date.today()
In [5]: today
Out[5]: datetime.date(2014, 8, 15)
In [6]: t = datetime.date(2014,8,15)
In [7]: t
Out[7]: datetime.date(2014, 8, 15)

2.datetime.date.strftime(format) 格式化為需要的時間,如常用的 “年-月-日 小時:分鐘:秒” 格式
In [8]: today.strftime('%Y-%m-%d %H:%M:%S')
Out[8]: '2014-08-15 00:00:00’
date對象中小時、分鐘、秒默認都是0,紀元年的那個時間

3.datetime.date.timple() 轉成struct_time格式,這樣傳遞給time.mktime(t)  后,直接轉成時間戳格式
In [9]: today.timetuple()
Out[9]: time.struct_time(tm_year=2014, tm_mon=8, tm_mday=15, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=4, tm_yday=227, tm_isdst=-1)
In [10]: time.mktime(today.timetuple())
Out[10]: 1408032000.0

4.datetime.date.replace(year, month, day)  返回一個替換后的date對象
In [11]: today.replace(year=2013)
Out[11]: datetime.date(2013, 8, 15)

5.datetime.date.fromtimestamp(timestamp) 將時間戳轉化為date對象
In [12]: datetime.date.fromtimestamp(1408058729)
Out[12]: datetime.date(2014, 8, 15)
            
          

2.datetime.time 類

            
              1.新建一個time對象
In [15]: t
Out[15]: datetime.time(8, 45, 20)

2.datetime.time.(format)格式化輸出
In [16]: t.strftime('%Y-%m-%d %H:%M:%S')
Out[16]: '1900-01-01 08:45:20’
time對應的年、月、日為1900、01、01,紀元年的那個時間

3.datetime.time.replace([hour[, minute[, second[, microsecond[, tzinfo]]]]])  返回一個替換后的time對象
In [17]: t.replace(hour=9)
Out[17]: datetime.time(9, 45, 20)
            
          

3.datetime.datetime類

            
              其實和date的那些方法差不多了,大概看以下,簡單說說
1.新建一個datetime對象,日期為今天,既可以直接調用datetime.datetime.today(),也可以直接向datetime.datetime()傳值,如下:
In [21]: d1 = datetime.datetime.today()
In [22]: d1
Out[22]: datetime.datetime(2014, 8, 15, 8, 12, 34, 790945)
In [23]: d2 = datetime.datetime(2014, 8, 15, 8, 12, 34, 790945)
In [24]: d2
Out[24]: datetime.datetime(2014, 8, 15, 8, 12, 34, 790945)

2.datetime.datetime.now([tz]) 當不指定時區時,和datetime.datetime.today()是一樣的結果,如下
In [25]: datetime.datetime.now()
Out[25]: datetime.datetime(2014, 8, 15, 8, 14, 50, 738672)

3..datetime.datetime.strftime(format) 格式化為需要的時間,如常用的 “年-月-日 小時:分鐘:秒” 格式
In [27]: d1
Out[27]: datetime.datetime(2014, 8, 15, 8, 12, 34, 790945)
In [28]: d1.strftime('%Y-%m-%d %H:%M:%S')
Out[28]: '2014-08-15 08:12:34’

4.datetime.datetime.timple() 轉成struct_time格式,這樣傳遞給time.mktime(t)  后,直接轉成時間戳格式
In [29]: d1
Out[29]: datetime.datetime(2014, 8, 15, 8, 12, 34, 790945)
In [30]: d1.timetuple()
Out[30]: time.struct_time(tm_year=2014, tm_mon=8, tm_mday=15, tm_hour=8, tm_min=12, tm_sec=34, tm_wday=4, tm_yday=227, tm_isdst=-1)
In [31]: time.mktime(d1.timetuple())
Out[31]: 1408061554.0

5.datetime.datetime.replace(year, month, day)  返回一個替換后的date對象
In [32]: d1
Out[32]: datetime.datetime(2014, 8, 15, 8, 12, 34, 790945)
In [33]: d1.replace(year=2000)
Out[33]: datetime.datetime(2000, 8, 15, 8, 12, 34, 790945)

6.datetime.datetime.fromtimestamp(timestamp) 將時間戳轉化為datetime對象
In [34]: time.time()
Out[34]: 1408061894.081552
In [35]: datetime.datetime.fromtimestamp(1408061894)
Out[35]: datetime.datetime(2014, 8, 15, 8, 18, 14)

            
          

4.datetime.timedelta類

            
              沒啥好說的,主要做時間的加減法用,如下:
In [78]: today = datetime.datetime.today()
In [79]: yesterday = today - datetime.timedelta(days=1)
In [80]: yesterday
Out[80]: datetime.datetime(2014, 8, 14, 15, 8, 25, 783471)
In [81]: today
Out[81]: datetime.datetime(2014, 8, 15, 15, 8, 25, 783471)
            
          
            
              原文:https://www.cnblogs.com/sunshineyang/p/6818834.html

            
          

更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 色婷婷久久综合中文久久一本 | 日韩在线观看一区二区三区 | 国产成人禁片免费观看视频 | 欧美色视频网 | 国产高清自拍 | 色吧五月婷婷 | 欧美精品成人a多人在线观看 | 欧美一级毛片俄罗斯 | 日韩在线视频不卡 | 91粉色视频在线观看 | 亚洲精品久久久久久久福利 | 波多野结衣一区二区三区高清在线 | 成人久久视频 | 999久久久免费精品国产牛牛 | 欧美影院一区二区 | 一区二区三区精品国产欧美 | 伊人快播 | 成人看片免费无限观看视频 | 免看一级a毛片一片成人不卡 | 午夜国产精品福利在线观看 | 在线欧美一区 | 亚洲欧美日韩精品一区 | 91视频这里只有精品 | 亚洲免费黄色 | 久久精品国内一区二区三区 | 国产精品一区二区久久精品涩爱 | 久久99久久99精品免观看 | 久久99久久99精品免观看不卡 | 亚洲另类在线视频 | 朴妮唛禁福利视频在线 | 天天看夜夜操 | 日本一级毛片一级裸片 | 久久这里只有精品免费看青草 | 国产精品永久免费 | 亚洲整片 | 狠狠躁夜夜躁人人爽天天不 | 亚洲图片综合 | 日韩一区国产二区欧美三 | 在线高清免费爱做网 | 亚洲精品乱码久久久久久麻豆 | 中文字幕免费在线看线人动作大片 |