python時間函數和經常使用格式化

使用以前import:python

import time,datetimepython2.7

下面的函數在python2.7裏能夠正常運行,但python2.4可能不支持某些方法。好比python2.4.3中報錯:函數

AttributeError: type object 'datetime.datetime' has no attribute 'strptime'spa

 

格式化當前時間則爲:orm

首選:time.strftime('%Y-%m-%d %H:%M:%S')字符串

其次:datetime.datetime.strftime(datetime.d atetime.now(), '%Y-%m-%d %H:%M:%S')get

最後:str(datetime.datetime.now())[:19]string

 

獲取日期差:it

oneday = datetime.timedelta(days=1)
today = datetime.date.today()
yesterday  = datetime.date.today() - onedayast

tomorrow = datetime.date.today() + oneday

獲取今天零點的時間:

today_zero_time = datetime.datetime.strftime(today, '%Y-%m-%d %H:%M:%S')

print today_zero_time

2013-05-21 00:00:00

 

獲取時間差:

oneday = datetime.timedelta(days=1)

today_time = datetime.datetime.now()

yesterday_time = datetime.datetime.now() - oneday

tomorrow_time  = datetime.datetime.now() + oneday

注意時間是浮點數,帶毫秒。以下:

print tomorrow_time
2013-05-22 10:34:43.873844

那麼要獲取當前時間,須要格式化一下:

oneday = datetime.timedelta(days=1)

today_time = datetime.datetime.now()

yesterday_time = datetime.datetime.now() - oneday

tomorrow_time  = datetime.datetime.now() + oneday

tomorrow_time = datetime.datetime.strftime(today_time, '%Y-%m-%d %H:%M:%S')

運行結果以下所示:

print tomorrow_time
2013-05-21 10:34:43

 

獲取上個月最後一天:

last_month_last_day = datetime.date(datetime.date.today().year,datetime.date.today().month,1)-datetime.timedelta(1) 

 

字符串格式轉秒數:

expire_time = "2013-05-21 09:50:35"

d = datetime.datetime.strptime(expire_time,"%Y-%m-%d %H:%M:%S")

time_sec_float = time.mktime(d.timetuple())

print time_sec_float
1369101035.0

注意python裏獲取到的是float類型的秒數,而不是整形。若是要得到整數,能夠用int(time_sec_float)

 

秒數轉字符串:

time_sec = time.time()

time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(time_sec))

 

python的時間轉換函數搞得太抽象複雜,所以我包裝了一個函數,傳入字符串能夠獲取到時間的各類格式,傳入秒數能夠獲取字符串格式時間(這個是很簡單的),還傳入兩個字符串格式的時間,以計算他們的時間差。

Python代碼  收藏代碼

  1. #coding=gbk  

  2.   

  3. import time, datetime  

  4.   

  5. # 傳入一個字符串格式的時間2013-05-21 14:31:23,能夠獲得各類格式的時間  

  6. class TIMEFORMAT:  

  7.     def __init__(self, time_string="1970-1-1 00:00:00"):  

  8.         self.time_string = self._format_time_string(time_string)  

  9.   

  10.     def _format_time_string(self, time_string):  

  11.         return time.strftime("%Y-%m-%d %H:%M:%S"self.get_struct(time_string))  

  12.  

  13.     @property  

  14.     def time_struct(self):  

  15.         return self.get_struct(self.time_string)  

  16.     def get_struct(self, time_string):  

  17.         return time.localtime(self.get_seconds(time_string))  

  18.  

  19.     @property  

  20.     def seconds(self):  

  21.         return self.get_seconds(self.time_string)  

  22.     def get_seconds(self, time_string):  

  23.         d = datetime.datetime.strptime(time_string, "%Y-%m-%d %H:%M:%S")  

  24.         return time.mktime(d.timetuple())  

  25.   

  26.     def get_string(self, time_sec):  

  27.         return time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(time_sec))  

  28.   

  29.     # 對於中國的時間,是1970-01-01 08:00:00  

  30.     def check_diff_time(self, t1, t2):  

  31.         sec1 = int(self.get_seconds(t1))  

  32.         sec2 = int(self.get_seconds(t2))  

  33.         if sec1 > sec2:  

  34.             secdiff = sec1 - sec2  

  35.         else:  

  36.             secdiff = sec2 - sec1  

  37.         d = self.get_struct(self.get_string(secdiff))  

  38.         day = d.tm_mday  

  39.         hour = d.tm_hour  

  40.         if d.tm_hour < 8:  

  41.             day -= 1  

  42.             hour = 24 + (d.tm_hour - 8)  

  43.         else:  

  44.             hour = d.tm_hour - 8  

  45.   

  46.         return {  

  47.             "year"  :d.tm_year - 1970,  

  48.             "month" :d.tm_mon  - 1,  

  49.             "day"   : day - 1,  

  50.             "hour"  : hour,  

  51.             "min"   : d.tm_min,  

  52.             "sec"   : d.tm_sec,  

  53.         }  

  54.   

  55. if __name__ == "__main__":  

  56.     t1 = TIMEFORMAT("2015-04-01 12:23:23")  

  57.     t2 = TIMEFORMAT("2014-03-10 22:23:23")  

  58.     print t1.seconds  

  59.     print t2.seconds  

  60.     d = t1.check_diff_time(t1.time_string, t2.time_string)  

  61.     print "%s 和 %s 時間差爲:%s年%s月%s天%s小時%s分%s秒" %(t1.time_string, t2.time_string, d["year"], d["month"], d["day"], d["hour"], d["min"], d["sec"]) 

相關文章
相關標籤/搜索