python time, datetime, string, timestamp相互轉換__python
來源:互聯網
上載者:User
########################## # Python Time Conversion # ##########################
------------------------ -- 一. 時間的表示類型 -- ------------------------
py中可能涉及的time有四種類型 1. time string 2. datetime tuple(datetime obj) 3. time tuple(time obj) 4. timestamp
1. time string string是最簡單的表示time的方式 如如下代碼產生的即為string ---------------------------------------------- >>> time.ctime() 'Mon Dec 17 21:02:55 2012' ---------------------------------------------- 或者更簡單的產生一個字串 ---------------------------------------------- time_string = '2000-01-02 03:04:05' ----------------------------------------------
2. datetime tuple(datetime obj) datetime tuple是datetime.datetime物件類型 ---------------------------------------------- >>> datetime.now() datetime.datetime(2012, 12, 17, 21, 3, 44, 139715) ----------------------------------------------
3. time tuple(time obj) time tuple是time.struct_time物件類型 ---------------------------------------------- time.struct_time(tm_year=2008, tm_mon=11, tm_mday=10, tm_hour=17, tm_min=53, tm_sec=59, tm_wday=0, tm_yday=315, tm_isdst=-1) ----------------------------------------------
4. timestamp 時間戳記類型:自1970年1月1日(00:00:00 GMT)以來的秒數 ---------------------------------------------- >>> time.time() 1355749338.05917 ----------------------------------------------
------------------------ -- 二. 類型之間的轉換 -- ------------------------
1. string 轉換為其它 初始化: date_str = "2008-11-10 17:53:59" 1.1 string --> datetime obj 匯入: import datetime datetime.datetime.strptime(string, format) eg ---------------------------------------------- >>> dt_obj = datetime.datetime.strptime(date_str, "%Y-%m-%d %H:%M:%S") >>> dt_obj datetime.datetime(2008, 11, 10, 17, 53, 59) ----------------------------------------------
1.2 string --> time obj 匯入: import time time.strptime(string, format) eg ---------------------------------------------- #time模組有類似datetime中的strptime()函數 >>> date_str = "2008-11-10 17:53:59" >>> t_obj = time.strptime(date_str, "%Y-%m-%d %H:%M:%S") >>> t_obj time.struct_time(tm_year=2008, tm_mon=11, tm_mday=10, tm_hour=17, tm_min=53, tm_sec=59, tm_wday=0, tm_yday=315, tm_isdst=-1) ----------------------------------------------
2. datetime obj轉換為其它 datetime obj轉換為其它類型,用的都是datetime的函數 初始化: dt_obj = datetime.datetime(2008, 11, 10, 17, 53, 59) 2.1 dt obj --> string ---------------------------------------------- date_str = dt_obj.strftime("%Y-%m-%d %H:%M:%S") ---------------------------------------------- 2.2 dt obj --> time obj ---------------------------------------------- time_tuple = dt_obj.timetuple() ----------------------------------------------
3. time obj轉換為其它 初始化: time_tuple = (2008, 11, 12, 13, 51, 18, 2, 317, 0) 3.1 time obj --> string ---------------------------------------------- date_str = time.strftime("%Y-%m-%d %H:%M:%S", time_tuple) ---------------------------------------------- 3.2 time obj --> datetime obj ---------------------------------------------- datetime.datetime(*time_tuple[0:6]) ---------------------------------------------- 3.3 time obj --> timestamp ---------------------------------------------- ts = time.mktime(time_tuple) ----------------------------------------------
4. timestamp轉換為其它 初始化: timestamp = 1226527167.595983 --!!--注意以下兩種都使用local時區 4.1 timestamp --> dt obj ---------------------------------------------- dt_obj = datetime.fromtimestamp(timestamp) ---------------------------------------------- 4.2 timestamp --> time obj ---------------------------------------------- time_tuple = time.localtime(timestamp) ---------------------------------------------- --!!--以下兩種方式和時區相關,比較標準時區時間和本地時區時間 4.3 使用UTC --> dt obj ---------------------------------------------- #本地時區時間 >>> datetime.datetime.fromtimestamp(tm) datetime.datetime(2012, 12, 17, 23, 39, 58, 401881) #標準時區時間 >>> datetime.datetime.utcfromtimestamp(tm) datetime.datetime(2012, 12, 17, 15, 39, 58, 401881) ---------------------------------------------- 4.4 使用UTC --> time obj ---------------------------------------------- #本地時區時間 >>> time.localtime(tm) time.struct_time(tm_year=2012, tm_mon=12, tm_mday=17, tm_hour=23, tm_min=39, tm_sec=58, tm_wday=0, tm_yday=352, tm_isdst=0) #標準時區時間 >>> time.gmtime(tm) time.struct_time(tm_year=2012, tm_mon=12, tm_mday=17, tm_hour=15, tm_min=39, tm_sec=58, tm_wday=0, tm_yday=352, tm_isdst=0)