float,python
struct tuple(time.struct_time 或 datetime.datetime),數組
str函數
經常使用的:spa
float --> struct tuple: time.localtime( float )code
struct time tuple --> str: time.strftime(format, struct time tuple)orm
str --> struct time tuple: time.strptime(str, format)字符串
struct time tuple --> float : time.mktime(struct time tuple)form
struct time tuple --> datetime: datetime(*time_tuple[0:6])import
float --> datetime: datetime.datetime.fromtimestamp( float )基礎
datetime --> str: datetime.strftime(format, datetime)
str --> datetime: datetime.strptime(str, format)
datetime --> struct time tuple: datetime.timetuple()
對於時間數據,如2016-05-05 20:28:54,有時須要與時間戳進行相互的運算,此時就須要對兩種形式進行轉換,在Python中,轉換時須要用到time模塊,具體的操做有以下的幾種:
將時間轉換爲時間戳
從新格式化時間
時間戳轉換爲時間
獲取當前時間及將其轉換成時間戳
一、將時間轉換成時間戳
將如上的時間2016-05-05 20:28:54轉換成時間戳,具體的操做過程爲:
利用strptime()函數將時間轉換成時間數組
利用mktime()函數將時間數組轉換成時間戳
#coding:UTF-8 import time dt = "2016-05-05 20:28:54" #轉換成時間數組 timeArray = time.strptime(dt, "%Y-%m-%d %H:%M:%S") #轉換成時間戳 timestamp = time.mktime(timeArray) print timestamp
二、從新格式化時間
從新格式化時間須要如下的兩個步驟:
利用strptime()函數將時間轉換成時間數組
利用strftime()函數從新格式化時間
#coding:UTF-8 import time dt = "2016-05-05 20:28:54" #轉換成時間數組 timeArray = time.strptime(dt, "%Y-%m-%d %H:%M:%S") #轉換成新的時間格式(20160505-20:28:54) dt_new = time.strftime("%Y%m%d-%H:%M:%S",timeArray) print dt_new
三、將時間戳轉換成時間
在時間戳轉換成時間中,首先須要將時間戳轉換成localtime,再轉換成時間的具體格式:
利用localtime()函數將時間戳轉化成localtime的格式
利用strftime()函數從新格式化時間
#coding:UTF-8 import time timestamp = 1462451334 #轉換成localtime time_local = time.localtime(timestamp) #轉換成新的時間格式(2016-05-05 20:28:54) dt = time.strftime("%Y-%m-%d %H:%M:%S",time_local) print dt
四、按指定的格式獲取當前時間
利用time()獲取當前時間,再利用localtime()函數轉換爲localtime,最後利用strftime()函數從新格式化時間。
#coding:UTF-8 import time #獲取當前時間 time_now = int(time.time()) #轉換成localtime time_local = time.localtime(time_now) #轉換成新的時間格式(2016-05-09 18:59:20) dt = time.strftime("%Y-%m-%d %H:%M:%S",time_local) print dt
datetime
一、當前時間
>>> import time >>> time.time() 1450681042.751 >>> time.localtime(time.time()) time.struct_time(tm_year=2015, tm_mon=12, tm_mday=21, tm_hour=15, tm_min=0, tm_sec=2, tm_wday=0, tm_yday=355, tm_isdst=0) >>> time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time())) '2015-12-21 15:01:28' >>> from datetime import datetime >>> datetime.now() datetime.datetime(2015, 12, 21, 14, 58, 38, 279000) >>> datetime.today() datetime.datetime(2015, 12, 21, 14, 59, 20, 204000) >>> now = datetime.now() >>> now.year, now.month, now.day, now.hour, now.minute, now.second, now.microsecond >>> now.isocalendar() # 2015年 第52周 星期一 (2015, 52, 1) >>> now.isoweekday() # 星期幾,1:Monday; 而 now.weekday() 返回值從0開始
二、字符串轉換爲日期
>>> s='2015-12-21 15:01:28' >>> timeTuple = datetime.strptime(s, '%Y-%m-%d %H:%M:%S') datetime.datetime(2015, 12, 21, 15, 1, 28) >>> datetime.datetime.strftime('%Y/%m/%d %H:%M:%S', timeTuple) >>> s='2015-12-21 15:01:28' >>> timeTuple = datetime.strptime(s, '%Y-%m-%d %H:%M:%S') time.struct_time(tm_year=2015, tm_mon=12, tm_mday=21, tm_hour=15, tm_min=1, tm_sec=28, tm_wday=0, tm_yday=355, tm_isdst=-1) >>> time.strftime('%Y/%m/%d %H:%M:%S',timeTuple)
三、時間戳
>>> time.mktime(time.strptime(s,'%Y-%m-%d %H:%M:%S')) 1450681288.0 >>> int(time.time()) # timestamp to time tuple in UTC timestamp = 1226527167.595983 time_tuple = time.gmtime(timestamp) print repr(time_tuple) # timestamp to time tuple in local time timestamp = 1226527167.595983 time_tuple = time.localtime(timestamp) print repr(time_tuple)
四、日期加減
多加一天 >>> print (datetime.datetime.now()+datetime.timedelta(days=1)).strftime("%Y-%m-% d %H:%M:%S") 2017-07-16 15:12:42 >>> 多加一小時 >>> print (datetime.datetime.now()+datetime.timedelta(hours=1)).strftime("%Y-%m- %d %H:%M:%S") 2017-07-15 16:10:43 >>> 多加一分鐘 >>> print (datetime.datetime.now()+datetime.timedelta(minutes=1)).strftime("%Y-% m-%d %H:%M:%S") 2017-07-15 15:12:56 >>>
time 是 float 爲基礎,小數點後是毫秒,整數部分是秒。(Java 是毫秒,因此,python_time*1000 == Java_time)
datetime 是int, 略去了毫秒部分。datetime tuple 少於 struct_time
python中時間日期格式化符號: %y 兩位數的年份表示(00-99) %Y 四位數的年份表示(000-9999) %m 月份(01-12) %d 月內中的一天(0-31) %H 24小時制小時數(0-23) %I 12小時制小時數(01-12) %M 分鐘數(00=59) %S 秒(00-59) %a 本地簡化星期名稱 %A 本地完整星期名稱 %b 本地簡化的月份名稱 %B 本地完整的月份名稱 %c 本地相應的日期表示和時間表示 %j 年內的一天(001-366) %p 本地A.M.或P.M.的等價符 %U 一年中的星期數(00-53)星期天爲星期的開始 %w 星期(0-6),星期天爲星期的開始 %W 一年中的星期數(00-53)星期一爲星期的開始 %x 本地相應的日期表示 %X 本地相應的時間表示 %Z 當前時區的名稱 %% %號自己