您好,登錄后才能下訂單哦!
最常見以及常用的幾種時間格式
1、時間戳(timestamp),時間戳表示的是從1970年1月1日00:00:00開始按秒計算的偏移量。
2、時間元組(struct_time),共有九個元素組。
3、格式化時間(format time ),可以格式化為固定或者自定義格式,增加可讀性。
#!/usr/bin/env python # -*- coding:utf-8 -*- import time #時間戳格式,默認獲取當前時間 1500029143.7640195 timestamp = time.time() print("獲取當前時間戳:",timestamp) #獲取元組(struct_time)的形式,默認獲取當前時間 struct_time_UTC8= time.localtime() print("獲取當前東8區(中國)的時間:",struct_time_UTC8) struct_time_UTC= time.gmtime() print("獲取當前的世界時間:",struct_time_UTC) '''注意: UTC(Coordinated Universal Time,世界協調時)亦即格林威治天文時間,世界標準時間。 在中國為UTC+8。DST(Daylight Saving Time)即夏令時 ''' #獲取格式化后的時間,即將時間格式化為%Y-%m-%d %H:%M:%S格式的字符串 format_time = time.strftime("%Y-%m-%d %H:%M:%S",time.localtime()) print("按照指定格式格式化后的時間:",format_time) # Fri Jul 14 18:45:43 2017(%a %b %d %H:%M:%S %Y)格式 #將時間戳格式的時間轉化成%a %b %d %H:%M:%S %Y格式,默認是將當前時間格式化 style_time1 = time.ctime() print("將時間戳轉化成%a %b %d %H:%M:%S %Y格式:",style_time1) #將元組(struct_time)形式的時間轉換成%a %b %d %H:%M:%S %Y格式,默認也是將當前時間格式化 style_time2 = time.asctime() print("將類似于元組(struct_time)轉換成%a %b %d %H:%M:%S %Y格式:",style_time2) '''運行結果 獲取當前時間戳: 1500029371.4988112 獲取當前東8區(中國)的時間: 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) 獲取當前的世界時間: 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) 按照指定格式格式化后的時間: 2017-07-14 18:49:31 將時間戳轉化成%a %b %d %H:%M:%S %Y格式: Fri Jul 14 18:49:31 2017 將類似于元組(struct_time)轉換成%a %b %d %H:%M:%S %Y格式: Fri Jul 14 18:49:31 2017 '''
一些基本概念
1.時間戳(timestamp)的形式:通常來說,時間戳表示的是從1970年1月1日00:00:00開始按秒計算的偏移量。返回時間戳方式的函數主要有time(),clock()等,默認是返回當前時間的時間戳。
2.元組(struct_time)的形式:struct_time元組共有9個元素。返回struct_time的函數主要有gmtime(),localtime(),strptime(),默認是返回當前時間的元組 (struct_time)形式,但也可以將其它時間段或者其它形式的時間格式轉換為元組(struct_time)形式。
struct_time元組9個元素詳細說明:
''' 0 tm_year(年) 比如2011 1 tm_mon(月) 1 - 12 2 tm_mday(日) 1 - 31 3 tm_hour(時) 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(是否是夏令時) 默認為-1 '''
幾種時間格式的轉換
#!/usr/bin/env python # -*- coding:utf-8 -*- import time #將一個時間戳轉化為一個元組(struct_time)形式的時間格式: tuple_struct = time.localtime(1499703018.0) print("將一個時間戳轉化為一個類似元組形式的時間格式:",tuple_struct) #將一個時間戳轉化為一個類似元組形式的時間格式: 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)形式的時間格式轉化為時間戳: t = (2017, 7, 11, 0, 10, 18, 1, 192, 0) timestamp1 = time.mktime(time.struct_time(t)) print("將類似于元組形式的時間格式轉化為時間戳:",timestamp1) #將元組(struct_time)形式的時間格式轉化為指定的格式如:%Y-%m-%d %H:%M:%S format_time1 = time.strftime("%Y-%m-%d %H:%M:%S",t) #2017-07-11 00:10:18 print("將類似于元素形式的時間格式轉化為指定的格式如:%Y-%m-%d %H:%M:%S:",format_time1) #將格式化后的時間轉化成元組(struct_time)形式的時間格式 tuple_struct2 = time.strptime("2017-07-11 00:10:18","%Y-%m-%d %H:%M:%S") print("將格式化后的時間轉化成元組形式的時間格式:",tuple_struct2) '''運行結果 將一個時間戳轉化為一個類似元組形式的時間格式: 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) 將類似于元組形式的時間格式轉化為時間戳: 1499703018.0 將類似于元素形式的時間格式轉化為指定的格式如:%Y-%m-%d %H:%M:%S: 2017-07-11 00:10:18 將格式化后的時間轉化成元組形式的時間格式: 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) '''
為了方便理解和記憶這幾種常用時間格式的轉化,請看下邊的圖:
時間格式化時的參考幫助信息
'''時間格式化時的參考幫助信息: %a 本地(locale)簡化星期名稱 %A 本地完整星期名稱 %b 本地簡化月份名稱 %B 本地完整月份名稱 %c 本地相應的日期和時間表示 %d 一個月中的第幾天(01 - 31) %H 一天中的第幾個小時(24小時制,00 - 23) %I 第幾個小時(12小時制,01 - 12) %j 一年中的第幾天(001 - 366) %m 月份(01 - 12) %M 分鐘數(00 - 59) %p 本地am或者pm的相應符 %S 秒(01 - 61) %U 一年中的星期數。(00 - 53星期天是一個星期的開始。)第一個星期天之前的所有天數都放在第0周。 %w 一個星期中的第幾天(0 - 6,0是星期天) 三 %W 和%U基本相同,不同的是%W以星期一為一個星期的開始。 %x 本地相應日期 %X 本地相應時間 %y 去掉世紀的年份(00 - 99) %Y 完整的年份 %Z 時區的名字(如果不存在為空字符) %% ‘%'字符 '''
######################################################
datetime模塊重新封裝了time模塊,提供了更多的類如:date、time、datetime、timedelta等。
1.datetim.data的常見用法示例
#!/usr/bin/env python # -*- coding:utf-8 -*- import datetime # 獲得一個date對象 d = datetime.date(2017,7,14) #參數年、月、日 #data能表示的最大日期 d_max = d.max print("data能表示的最大日期:",d_max) #data能表示的最小日期 d_min = d.min print("data能表示的最大日期:",d.min) #獲取當前日期 d_today = d.today() print("獲取當前日期:",d.today()) #獲取年、月、日 year = d.year month = d.month day = d.day print("獲取年%s、月%s、日%s"% (year,month,day)) #根據給定的時間戳返回對應的日期 d_date = d.fromtimestamp(12312432432) print("根據給定的時間戳返回對應的日期:",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) #返回時間的元組(struct_time)形式 d_tuple = d.timetuple() print("返回時間的元組(struct_time)形式:",d_tuple) '''運行結果 data能表示的最大日期: 9999-12-31 data能表示的最大日期: 0001-01-01 獲取當前日期: 2017-07-14 獲取年2017、月7、日14 根據給定的時間戳返回對應的日期: 2360-03-02 返回weekday為: 4 返回格式化(YYYY-MM-DD)的字符串: 2017-07-14 格式化后的字符串: 2017-07-14 00:00:00 返回時間的元組(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) #參數時、分、秒 #time能表示的最大時間 dt_max = dt.max print("能表示的最大時間:",dt_max) #time能表示的最小時間 dt_min = dt.min print("能表示的最小時間:",dt_min) #獲取時、分、秒、微妙 hour = dt.hour minute = dt.minute second = dt.second microsecond = dt.microsecond print("獲取時%s、分%s、秒%s、微妙%s"% (hour,minute,second,microsecond)) #返回時間的格式化字符串(HH:MM:SS) dt_format = dt.isoformat() print("返回時間的格式化字符串(HH:MM:SS):",dt_format) #格式化,類似于time模塊的strftime dt_strftime = dt.strftime("%H:%M:%S") print("格式化:",dt_strftime) '''運行結果 能表示的最大時間: 23:59:59.999999 能表示的最小時間: 00:00:00 獲取時17、分30、秒0、微妙0 返回時間的格式化字符串(HH:MM:SS): 17:30:00 格式化: 17:30:00 '''
3.datetime.datetime的常見用法示例
#!/usr/bin/env python # -*- coding:utf-8 -*- import datetime #獲得當前的本地時間 d_today = datetime.datetime.today() print("獲得當前的本地時間:",d_today) #獲得當前時間,如果提供了時區參數tz,則根據時區參數獲取指定時區的時間 d_now = datetime.datetime.now() print("獲得當前時間:",d_now) #獲取當前的世界標準時間(即格林威治天文時間) d_utc = datetime.datetime.utcnow() print("獲取當前的世界標準時間(即格林威治天文時間):",d_utc) #將時間戳轉化成格式化的字符串,可以時區參數tz轉成指定時區的格式化時間 d_fromtimestamp = datetime.datetime.fromtimestamp(123214324) print("將時間戳轉化成格式化的字符串:",d_fromtimestamp) #根據時間戳以utc標準時區時間來進行格式化 d_utcfromtimestam = datetime.datetime.utcfromtimestamp(123214324) print("將時間戳以utc標準時區時間來轉化成格式化的字符串:",d_utcfromtimestam) '''注意通過上邊輸出結果的比較我們會發現通過fromtimestamp和utcfromtimestamp轉化統一時間戳得到的 時間正好差了8h ''' ################## dd = datetime.datetime(2017,7,14,17,30,00) #將指定的時間轉化成格式化的字符串,類似于time的strftime dd_strftime = dd.strftime("%Y-%m-%d %H:%M:%S") print("將指定的時間進行格式化",dd_strftime) #返回weekday,如果星期一則返回0,星期二返回1,以此類推,2017-7-14是星期五 dd_weekday = dd.weekday() print("返回weekday為:",dd_weekday) #獲得元組(struct_time)形式的時間格式 dd_timetuple = dd.timetuple() print("獲得元組(struct_time)形式的時間格式:",dd_timetuple) #dd_utctimetuple = dd.utctimetuple() #以utc標準獲取 #返回一個格式化為%Y-%m-%d %H:%M:%S格式的字符串 dd_isoformat = dd.isoformat() print("返回一個格式化為%Y-%m-%d %H:%M:%S格式的字符串:",dd_isoformat) '''運行結果 獲得當前的本地時間: 2017-07-14 18:57:59.309859 獲得當前時間: 2017-07-14 18:57:59.309858 獲取當前的世界標準時間(即格林威治天文時間): 2017-07-14 10:57:59.309858 將時間戳轉化成格式化的字符串: 1973-11-27 10:12:04 將時間戳以utc標準時區時間來轉化成格式化的字符串: 1973-11-27 02:12:04 將指定的時間進行格式化 2017-07-14 17:30:00 返回weekday為: 4 獲得元組(struct_time)形式的時間格式: 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) 返回一個格式化為%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 #獲取當前時間 now_date = datetime.datetime.now() print("獲取當前時間:",now_date) #獲取五天后的時間 five_later = datetime.datetime.now() + datetime.timedelta(5) print("獲取五天后的時間:",five_later) #獲取五天前的時間 five_ago = datetime.datetime.now() - datetime.timedelta(5) print("獲取五天前的時間:",five_ago) #獲的三個小時后的時間 three_hour_later = datetime.datetime.now() + datetime.timedelta(hours=3) print("獲的三個小時后的時間:",three_hour_later) '''運行結果 獲取當前時間: 2017-07-14 19:00:04.955596 獲取五天后的時間: 2017-07-19 19:00:04.955596 獲取五天前的時間: 2017-07-09 19:00:04.955596 獲的三個小時后的時間: 2017-07-14 22:00:04.955596 '''
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。