Python中time模塊和datetime模塊的常用操作以及幾種常用時(shí)間格式間的轉(zhuǎn)換

最常見以及常用的幾種時(shí)間格式

成都創(chuàng)新互聯(lián)成都網(wǎng)站建設(shè)按需定制,是成都網(wǎng)站建設(shè)公司,為陽光房提供網(wǎng)站建設(shè)服務(wù),有成熟的網(wǎng)站定制合作流程,提供網(wǎng)站定制設(shè)計(jì)服務(wù):原型圖制作、網(wǎng)站創(chuàng)意設(shè)計(jì)、前端HTML5制作、后臺程序開發(fā)等。成都網(wǎng)站改版熱線:13518219792

   1、時(shí)間戳(timestamp),時(shí)間戳表示的是從1970年1月1日00:00:00開始按秒計(jì)算的偏移量。

   2、時(shí)間元組(struct_time),共有九個(gè)元素組。

   3、格式化時(shí)間(format time ),可以格式化為固定或者自定義格式,增加可讀性。

#!/usr/bin/env python
# -*- coding:utf-8 -*-
import time
#時(shí)間戳格式,默認(rèn)獲取當(dāng)前時(shí)間 1500029143.7640195
timestamp = time.time()
print("獲取當(dāng)前時(shí)間戳:",timestamp)


#獲取元組(struct_time)的形式,默認(rèn)獲取當(dāng)前時(shí)間
struct_time_UTC8= time.localtime()
print("獲取當(dāng)前東8區(qū)(中國)的時(shí)間:",struct_time_UTC8)
struct_time_UTC= time.gmtime()
print("獲取當(dāng)前的世界時(shí)間:",struct_time_UTC)
'''注意:
UTC(Coordinated Universal Time,世界協(xié)調(diào)時(shí))亦即格林威治天文時(shí)間,世界標(biāo)準(zhǔn)時(shí)間。
在中國為UTC+8。DST(Daylight Saving Time)即夏令時(shí)
'''

#獲取格式化后的時(shí)間,即將時(shí)間格式化為%Y-%m-%d %H:%M:%S格式的字符串
format_time = time.strftime("%Y-%m-%d %H:%M:%S",time.localtime())
print("按照指定格式格式化后的時(shí)間:",format_time)

#  Fri Jul 14 18:45:43 2017(%a %b %d %H:%M:%S %Y)格式
#將時(shí)間戳格式的時(shí)間轉(zhuǎn)化成%a %b %d %H:%M:%S %Y格式,默認(rèn)是將當(dāng)前時(shí)間格式化
style_time1 = time.ctime()
print("將時(shí)間戳轉(zhuǎn)化成%a %b %d %H:%M:%S %Y格式:",style_time1)
#將元組(struct_time)形式的時(shí)間轉(zhuǎn)換成%a %b %d %H:%M:%S %Y格式,默認(rèn)也是將當(dāng)前時(shí)間格式化
style_time2 = time.asctime()
print("將類似于元組(struct_time)轉(zhuǎn)換成%a %b %d %H:%M:%S %Y格式:",style_time2)


'''運(yùn)行結(jié)果
獲取當(dāng)前時(shí)間戳: 1500029371.4988112
獲取當(dāng)前東8區(qū)(中國)的時(shí)間: time.struct_time(tm_year=2017, tm_mon=7, tm_mday=14, tm_hour=18, tm_min=49, tm_sec=31, tm_wday=4, tm_yday=195, tm_isdst=0)
獲取當(dāng)前的世界時(shí)間: time.struct_time(tm_year=2017, tm_mon=7, tm_mday=14, tm_hour=10, tm_min=49, tm_sec=31, tm_wday=4, tm_yday=195, tm_isdst=0)
按照指定格式格式化后的時(shí)間: 2017-07-14 18:49:31
將時(shí)間戳轉(zhuǎn)化成%a %b %d %H:%M:%S %Y格式: Fri Jul 14 18:49:31 2017
將類似于元組(struct_time)轉(zhuǎn)換成%a %b %d %H:%M:%S %Y格式: Fri Jul 14 18:49:31 2017
'''

一些基本概念

  1.時(shí)間戳(timestamp)的形式:通常來說,時(shí)間戳表示的是從1970年1月1日00:00:00開始按秒計(jì)算的偏移量。返回時(shí)間戳方式的函數(shù)主要有time(),clock()等,默認(rèn)是返回當(dāng)前時(shí)間的時(shí)間戳。

  2.元組(struct_time)的形式:struct_time元組共有9個(gè)元素。返回struct_time的函數(shù)主要有g(shù)mtime(),localtime(),strptime(),默認(rèn)是返回當(dāng)前時(shí)間的元組   (struct_time)形式,但也可以將其它時(shí)間段或者其它形式的時(shí)間格式轉(zhuǎn)換為元組(struct_time)形式。

  struct_time元組9個(gè)元素詳細(xì)說明:

'''
0   tm_year(年)  比如2011
1   tm_mon(月)   1 - 12
2   tm_mday(日)  1 - 31
3   tm_hour(時(shí))  0 - 23
4   tm_min(分)   0 - 59
5   tm_sec(秒)   0 - 61
6   tm_wday(weekday)    0 - 6(0表示周日)
7   tm_yday(一年中的第幾天)    1 - 366
8   tm_isdst(是否是夏令時(shí))    默認(rèn)為-1
'''

幾種時(shí)間格式的轉(zhuǎn)換

#!/usr/bin/env python
# -*- coding:utf-8 -*-
import time
#將一個(gè)時(shí)間戳轉(zhuǎn)化為一個(gè)元組(struct_time)形式的時(shí)間格式:
tuple_struct = time.localtime(1499703018.0)
print("將一個(gè)時(shí)間戳轉(zhuǎn)化為一個(gè)類似元組形式的時(shí)間格式:",tuple_struct)   #將一個(gè)時(shí)間戳轉(zhuǎn)化為一個(gè)類似元組形式的時(shí)間格式: time.struct_time(tm_year=1973, tm_mon=11, tm_mday=30, tm_hour=5, tm_min=33, tm_sec=9, tm_wday=4, tm_yday=334, tm_isdst=0)
#將元組(struct_time)形式的時(shí)間格式轉(zhuǎn)化為時(shí)間戳:
t = (2017, 7, 11, 0, 10, 18, 1, 192, 0)
timestamp1 = time.mktime(time.struct_time(t))
print("將類似于元組形式的時(shí)間格式轉(zhuǎn)化為時(shí)間戳:",timestamp1)

#將元組(struct_time)形式的時(shí)間格式轉(zhuǎn)化為指定的格式如:%Y-%m-%d %H:%M:%S
format_time1 = time.strftime("%Y-%m-%d %H:%M:%S",t)  #2017-07-11 00:10:18
print("將類似于元素形式的時(shí)間格式轉(zhuǎn)化為指定的格式如:%Y-%m-%d %H:%M:%S:",format_time1)

#將格式化后的時(shí)間轉(zhuǎn)化成元組(struct_time)形式的時(shí)間格式
tuple_struct2 = time.strptime("2017-07-11 00:10:18","%Y-%m-%d %H:%M:%S")
print("將格式化后的時(shí)間轉(zhuǎn)化成元組形式的時(shí)間格式:",tuple_struct2)
'''運(yùn)行結(jié)果
將一個(gè)時(shí)間戳轉(zhuǎn)化為一個(gè)類似元組形式的時(shí)間格式: time.struct_time(tm_year=2017, tm_mon=7, tm_mday=11, tm_hour=0, tm_min=10, tm_sec=18, tm_wday=1, tm_yday=192, tm_isdst=0)
將類似于元組形式的時(shí)間格式轉(zhuǎn)化為時(shí)間戳: 1499703018.0
將類似于元素形式的時(shí)間格式轉(zhuǎn)化為指定的格式如:%Y-%m-%d %H:%M:%S: 2017-07-11 00:10:18
將格式化后的時(shí)間轉(zhuǎn)化成元組形式的時(shí)間格式: time.struct_time(tm_year=2017, tm_mon=7, tm_mday=11, tm_hour=0, tm_min=10, tm_sec=18, tm_wday=1, tm_yday=192, tm_isdst=-1)
'''

為了方便理解和記憶這幾種常用時(shí)間格式的轉(zhuǎn)化,請看下邊的圖:

Python中time模塊和datetime模塊的常用操作以及幾種常用時(shí)間格式間的轉(zhuǎn)換

時(shí)間格式化時(shí)的參考幫助信息

'''時(shí)間格式化時(shí)的參考幫助信息:
%a  本地(locale)簡化星期名稱    
%A  本地完整星期名稱    
%b  本地簡化月份名稱    
%B  本地完整月份名稱    
%c  本地相應(yīng)的日期和時(shí)間表示    
%d  一個(gè)月中的第幾天(01 - 31)   
%H  一天中的第幾個(gè)小時(shí)(24小時(shí)制,00 - 23)    
%I  第幾個(gè)小時(shí)(12小時(shí)制,01 - 12)    
%j  一年中的第幾天(001 - 366)  
%m  月份(01 - 12) 
%M  分鐘數(shù)(00 - 59)    
%p  本地am或者pm的相應(yīng)符    
%S  秒(01 - 61)  
%U  一年中的星期數(shù)。(00 - 53星期天是一個(gè)星期的開始。)第一個(gè)星期天之前的所有天數(shù)都放在第0周。   
%w  一個(gè)星期中的第幾天(0 - 6,0是星期天)  三
%W  和%U基本相同,不同的是%W以星期一為一個(gè)星期的開始。 
%x  本地相應(yīng)日期  
%X  本地相應(yīng)時(shí)間  
%y  去掉世紀(jì)的年份(00 - 99)    
%Y  完整的年份   
%Z  時(shí)區(qū)的名字(如果不存在為空字符)    
%%  ‘%'字符
'''

######################################################

datetime模塊重新封裝了time模塊,提供了更多的類如:date、time、datetime、timedelta等。

  1.datetim.data的常見用法示例

#!/usr/bin/env python
# -*- coding:utf-8 -*-
import datetime
# 獲得一個(gè)date對象
d = datetime.date(2017,7,14)   #參數(shù)年、月、日

#data能表示的最大日期
d_max = d.max
print("data能表示的最大日期:",d_max)

#data能表示的最小日期
d_min = d.min
print("data能表示的最大日期:",d.min)

#獲取當(dāng)前日期
d_today = d.today()
print("獲取當(dāng)前日期:",d.today())

#獲取年、月、日
year = d.year
month = d.month
day = d.day
print("獲取年%s、月%s、日%s"% (year,month,day))

#根據(jù)給定的時(shí)間戳返回對應(yīng)的日期
d_date = d.fromtimestamp(12312432432)
print("根據(jù)給定的時(shí)間戳返回對應(yīng)的日期:",d_date)

#返回weekday,如果星期一則返回0,星期二返回1,以此類推,2017-7-14是星期五
d_weekday = d.weekday()
print("返回weekday為:",d_weekday)

#返回格式化為(YYYY-MM-DD)的字符串
d_format = d.isoformat()
print("返回格式化(YYYY-MM-DD)的字符串:",d_format)

#返回格式化的日期字符串類似time模塊的strftime
d_strftime = d.strftime("%Y-%m-%d %H:%M:%S")
print("格式化后的字符串:",d_strftime)

#返回時(shí)間的元組(struct_time)形式
d_tuple = d.timetuple()
print("返回時(shí)間的元組(struct_time)形式:",d_tuple)

'''運(yùn)行結(jié)果
data能表示的最大日期: 9999-12-31
data能表示的最大日期: 0001-01-01
獲取當(dāng)前日期: 2017-07-14
獲取年2017、月7、日14
根據(jù)給定的時(shí)間戳返回對應(yīng)的日期: 2360-03-02
返回weekday為: 4
返回格式化(YYYY-MM-DD)的字符串: 2017-07-14
格式化后的字符串: 2017-07-14 00:00:00
返回時(shí)間的元組(struct_time)形式: time.struct_time(tm_year=2017, tm_mon=7, tm_mday=14, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=4, tm_yday=195, tm_isdst=-1)
'''

  2.datetime.time的常見用法示例

#!/usr/bin/env python
# -*- coding:utf-8 -*-
import datetime
dt = datetime.time(17,30,00)   #參數(shù)時(shí)、分、秒
#time能表示的最大時(shí)間
dt_max = dt.max
print("能表示的最大時(shí)間:",dt_max)

#time能表示的最小時(shí)間
dt_min = dt.min
print("能表示的最小時(shí)間:",dt_min)

#獲取時(shí)、分、秒、微妙
hour = dt.hour
minute = dt.minute
second = dt.second
microsecond = dt.microsecond
print("獲取時(shí)%s、分%s、秒%s、微妙%s"% (hour,minute,second,microsecond))

#返回時(shí)間的格式化字符串(HH:MM:SS)
dt_format = dt.isoformat()
print("返回時(shí)間的格式化字符串(HH:MM:SS):",dt_format)

#格式化,類似于time模塊的strftime
dt_strftime = dt.strftime("%H:%M:%S")
print("格式化:",dt_strftime)
'''運(yùn)行結(jié)果
能表示的最大時(shí)間: 23:59:59.999999
能表示的最小時(shí)間: 00:00:00
獲取時(shí)17、分30、秒0、微妙0
返回時(shí)間的格式化字符串(HH:MM:SS): 17:30:00
格式化: 17:30:00
'''

  3.datetime.datetime的常見用法示例

#!/usr/bin/env python
# -*- coding:utf-8 -*-
import datetime
#獲得當(dāng)前的本地時(shí)間
d_today = datetime.datetime.today()
print("獲得當(dāng)前的本地時(shí)間:",d_today)

#獲得當(dāng)前時(shí)間,如果提供了時(shí)區(qū)參數(shù)tz,則根據(jù)時(shí)區(qū)參數(shù)獲取指定時(shí)區(qū)的時(shí)間
d_now = datetime.datetime.now()
print("獲得當(dāng)前時(shí)間:",d_now)

#獲取當(dāng)前的世界標(biāo)準(zhǔn)時(shí)間(即格林威治天文時(shí)間)
d_utc = datetime.datetime.utcnow()
print("獲取當(dāng)前的世界標(biāo)準(zhǔn)時(shí)間(即格林威治天文時(shí)間):",d_utc)

#將時(shí)間戳轉(zhuǎn)化成格式化的字符串,可以時(shí)區(qū)參數(shù)tz轉(zhuǎn)成指定時(shí)區(qū)的格式化時(shí)間
d_fromtimestamp = datetime.datetime.fromtimestamp(123214324)
print("將時(shí)間戳轉(zhuǎn)化成格式化的字符串:",d_fromtimestamp)

#根據(jù)時(shí)間戳以utc標(biāo)準(zhǔn)時(shí)區(qū)時(shí)間來進(jìn)行格式化
d_utcfromtimestam = datetime.datetime.utcfromtimestamp(123214324)
print("將時(shí)間戳以utc標(biāo)準(zhǔn)時(shí)區(qū)時(shí)間來轉(zhuǎn)化成格式化的字符串:",d_utcfromtimestam)
'''注意通過上邊輸出結(jié)果的比較我們會發(fā)現(xiàn)通過fromtimestamp和utcfromtimestamp轉(zhuǎn)化統(tǒng)一時(shí)間戳得到的
時(shí)間正好差了8h
'''

##################
dd = datetime.datetime(2017,7,14,17,30,00)
#將指定的時(shí)間轉(zhuǎn)化成格式化的字符串,類似于time的strftime
dd_strftime = dd.strftime("%Y-%m-%d %H:%M:%S")
print("將指定的時(shí)間進(jìn)行格式化",dd_strftime)

#返回weekday,如果星期一則返回0,星期二返回1,以此類推,2017-7-14是星期五
dd_weekday = dd.weekday()
print("返回weekday為:",dd_weekday)

#獲得元組(struct_time)形式的時(shí)間格式
dd_timetuple = dd.timetuple()
print("獲得元組(struct_time)形式的時(shí)間格式:",dd_timetuple)
#dd_utctimetuple = dd.utctimetuple()  #以utc標(biāo)準(zhǔn)獲取

#返回一個(gè)格式化為%Y-%m-%d %H:%M:%S格式的字符串
dd_isoformat = dd.isoformat()
print("返回一個(gè)格式化為%Y-%m-%d %H:%M:%S格式的字符串:",dd_isoformat)
'''運(yùn)行結(jié)果
獲得當(dāng)前的本地時(shí)間: 2017-07-14 18:57:59.309859
獲得當(dāng)前時(shí)間: 2017-07-14 18:57:59.309858
獲取當(dāng)前的世界標(biāo)準(zhǔn)時(shí)間(即格林威治天文時(shí)間): 2017-07-14 10:57:59.309858
將時(shí)間戳轉(zhuǎn)化成格式化的字符串: 1973-11-27 10:12:04
將時(shí)間戳以utc標(biāo)準(zhǔn)時(shí)區(qū)時(shí)間來轉(zhuǎn)化成格式化的字符串: 1973-11-27 02:12:04
將指定的時(shí)間進(jìn)行格式化 2017-07-14 17:30:00
返回weekday為: 4
獲得元組(struct_time)形式的時(shí)間格式: time.struct_time(tm_year=2017, tm_mon=7, tm_mday=14, tm_hour=17, tm_min=30, tm_sec=0, tm_wday=4, tm_yday=195, tm_isdst=-1)
返回一個(gè)格式化為%Y-%m-%d %H:%M:%S格式的字符串: 2017-07-14T17:30:00
'''

   4.datetime.timedelta的常見用法示例

#!/usr/bin/env python
# -*- coding:utf-8 -*-
# Author:Yaosheng Wang
import datetime
#獲取當(dāng)前時(shí)間
now_date = datetime.datetime.now()
print("獲取當(dāng)前時(shí)間:",now_date)
#獲取五天后的時(shí)間
five_later = datetime.datetime.now() + datetime.timedelta(5)
print("獲取五天后的時(shí)間:",five_later)

#獲取五天前的時(shí)間
five_ago = datetime.datetime.now() - datetime.timedelta(5)
print("獲取五天前的時(shí)間:",five_ago)

#獲的三個(gè)小時(shí)后的時(shí)間
three_hour_later = datetime.datetime.now() + datetime.timedelta(hours=3)
print("獲的三個(gè)小時(shí)后的時(shí)間:",three_hour_later)
'''運(yùn)行結(jié)果
獲取當(dāng)前時(shí)間: 2017-07-14 19:00:04.955596
獲取五天后的時(shí)間: 2017-07-19 19:00:04.955596
獲取五天前的時(shí)間: 2017-07-09 19:00:04.955596
獲的三個(gè)小時(shí)后的時(shí)間: 2017-07-14 22:00:04.955596
'''

名稱欄目:Python中time模塊和datetime模塊的常用操作以及幾種常用時(shí)間格式間的轉(zhuǎn)換
URL分享:http://bm7419.com/article38/igsgpp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供手機(jī)網(wǎng)站建設(shè)、微信公眾號、商城網(wǎng)站云服務(wù)器、、標(biāo)簽優(yōu)化

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

h5響應(yīng)式網(wǎng)站建設(shè)