time有四種類型(time,?datetime,?string,?timestamp)
1. time string
string是最簡單的表示time的方式
如如下代碼生成的即為string
1 2 3 | >>>? import ?time >>>? time .ctime() 'Wed Nov 30 13:53:31 2016' |
或者更簡單的生成一個字符串
1 | time_string =? '2016-11-30 13:54:05' |
?
2. datetime tuple(datetime obj)
datetime tuple是datetime.datetime對象類型
1 2 3 | >>>? import ?datetime >>> datetime.datetime.now() datetime.datetime(2016, 11, 30, 13, 56, 51, 984213) |
?
3. time tuple(time obj)
time tuple是time.struct_time對象類型
1 2 3 | >>> date_str =? "2016-11-30 13:53:59" >>>? time .strptime(date_str,? "%Y-%m-%d %H:%M:%S" ) time .struct_time(tm_year=2016, tm_mon=11, tm_mday=30, tm_hour=13, tm_min=53, tm_sec=59, tm_wday=2, tm_yday=335, tm_isdst=-1) |
4. timestamp
時間戳類型:自1970年1月1日(00:00:00 GMT)以來的秒數
1 2 3 | >>>? import ?time >>>? time . time () 1480485476.20922 |
?
time,?datetime,?string,?timestamp相互轉換
1. string 轉換為其它
初始化:
????date_str = "2016-11-30 13:53:59"
1.1 string --> datetime obj
1 2 3 4 | >>>? import ?datetime >>> date_str =? "2016-11-30 13:53:59" >>> datetime.datetime.strptime(date_str,? "%Y-%m-%d %H:%M:%S" ) datetime.datetime(2016, 11, 30, 13, 53, 59) |
1.2 string --> time obj
1 2 3 4 | >>>? import ?time >>> date_str =? "2016-11-30 13:53:59" >>>? time .strptime(date_str,? "%Y-%m-%d %H:%M:%S" ) time .struct_time(tm_year=2016, tm_mon=11, tm_mday=30, tm_hour=13, tm_min=53, tm_sec=59, tm_wday=2, tm_yday=335, tm_isdst=-1) |
?
2. datetime obj轉換為其它
datetime obj轉換為其它類型,用的都是datetime的函數
初始化:
????dt_obj = datetime.datetime(2016, 11, 30, 13, 53, 59)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | 格式字符? 意義 %a 星期的簡寫。如 星期三為Web %A 星期的全寫。如 星期三為Wednesday %b 月份的簡寫。如4月份為Apr %B 月份的全寫。如4月份為April %c:? 日期時間的字符串表示。(如: 04 /07/10 ?10:43:39) %d:? 日在這個月中的天數(是這個月的第幾天) %f:? 微秒(范圍[0,999999]) %H:? 小時(24小時制,[0, 23]) %I:? 小時(12小時制,[0, 11]) %j:? 日在年中的天數 [001,366](是當年的第幾天) %m:? 月份([01,12]) %M:? 分鐘([00,59]) %p:? AM或者PM %S:? 秒(范圍為[00,61],為什么不是[00, 59],參考python手冊~_~) %U:? 周在當年的周數當年的第幾周),星期天作為周的第一天 %w:? 今天在這周的天數,范圍為[0, 6],6表示星期天 %W:? 周在當年的周數(是當年的第幾周),星期一作為周的第一天 %x:? 日期字符串(如:04 /07/10 ) %X:? 時間字符串(如:10:43:39) %y:? 2個數字表示的年份 %Y:? 4個數字表示的年份 %z:? 與utc時間的間隔 (如果是本地時間,返回空字符串) %Z:? 時區名稱(如果是本地時間,返回空字符串) %%:? %% => % |
2.1 dt obj --> string
1 2 3 4 | >>>? import ?datetime >>> dt_obj = datetime.datetime(2016, 11, 30, 13, 53, 59) >>> dt_obj.strftime( "%Y-%m-%d %H:%M:%S" ) '2016-11-30 13:53:59' |
2.2 dt obj --> time obj
1 2 3 4 | >>>? import ?datetime >>> dt_obj = datetime.datetime(2016, 11, 30, 13, 53, 59) >>> dt_obj.timetuple() time .struct_time(tm_year=2016, tm_mon=11, tm_mday=30, tm_hour=13, tm_min=53, tm_sec=59, tm_wday=2, tm_yday=335, tm_isdst=-1) |
?
3. time obj轉換為其它
初始化:
????time_tuple = (2016, 11, 30, 13, 51, 18, 2, 317, 0)
3.1 time obj --> string
1 2 3 4 | >>>? import ?time >>> time_tuple = (2016, 11, 30, 13, 51, 18, 2, 317, 0) >>>? time .strftime( "%Y-%m-%d %H:%M:%S" , time_tuple) '2016-11-30 13:51:18' |
3.2 time obj --> datetime obj
1 2 3 4 | >>>? import ?time , datetime >>> time_tuple = (2016, 11, 30, 13, 51, 18, 2, 317, 0) >>> datetime.datetime(*time_tuple[0:6]) datetime.datetime(2016, 11, 30, 13, 51, 18) |
3.3 time obj --> timestamp
1 2 3 4 | >>>? import ?time >>> time_tuple = (2016, 11, 30, 13, 51, 18, 2, 317, 0) >>>? time .mktime(time_tuple) 1480485078.0 |
?
4. timestamp轉換為其它
初始化:
????timestamp =?1480486369.75
--!!--注意以下兩種都使用local時區
4.1 timestamp --> dt obj
1 2 3 4 | >>>? import ?datetime >>> timestamp = 1480486369.75 >>> datetime.datetime.fromtimestamp(timestamp) datetime.datetime(2016, 11, 30, 14, 12, 49, 750000) |
4.2 timestamp --> time obj
1 2 3 4 | >>>? import ?time >>> timestamp = 1480486369.75 >>>? time .localtime(timestamp) time .struct_time(tm_year=2016, tm_mon=11, tm_mday=30, tm_hour=14, tm_min=12, tm_sec=49, tm_wday=2, tm_yday=335, tm_isdst=0) |
--!!--以下兩種方式和時區相關,比較標準時區時間和本地時區時間
4.3 使用UTC --> dt obj
#本地時區時間
1 2 3 4 | >>>? import ?datetime >>> timestamp = 1480486369.75 >>> datetime.datetime.fromtimestamp(timestamp) datetime.datetime(2016, 11, 30, 14, 12, 49, 750000) |
#標準時區時間
1 2 3 4 | >>>? import ?datetime >>> timestamp = 1480486369.75 >>> datetime.datetime.utcfromtimestamp(timestamp) datetime.datetime(2016, 11, 30, 6, 12, 49, 750000) |
4.4 使用UTC --> time obj
#本地時區時間
1 2 3 4 | >>>? import ?time >>> timestamp = 1480486369.75 >>>? time .localtime(timestamp) time .struct_time(tm_year=2016, tm_mon=11, tm_mday=30, tm_hour=14, tm_min=12, tm_sec=49, tm_wday=2, tm_yday=335, tm_isdst=0) |
#標準時區時間
1 2 3 4 | >>>? import ?datetime >>> timestamp = 1480486369.75 >>>? time .gmtime(timestamp) time .struct_time(tm_year=2016, tm_mon=11, tm_mday=30, tm_hour=6, tm_min=12, tm_sec=49, tm_wday=2, tm_yday=335, tm_isdst=0) |