使用以前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的時間轉換函數搞得太抽象複雜,所以我包裝了一個函數,傳入字符串能夠獲取到時間的各類格式,傳入秒數能夠獲取字符串格式時間(這個是很簡單的),還傳入兩個字符串格式的時間,以計算他們的時間差。
#coding=gbk
import time, datetime
# 傳入一個字符串格式的時間2013-05-21 14:31:23,能夠獲得各類格式的時間
class TIMEFORMAT:
def __init__(self, time_string="1970-1-1 00:00:00"):
self.time_string = self._format_time_string(time_string)
def _format_time_string(self, time_string):
return time.strftime("%Y-%m-%d %H:%M:%S", self.get_struct(time_string))
@property
def time_struct(self):
return self.get_struct(self.time_string)
def get_struct(self, time_string):
return time.localtime(self.get_seconds(time_string))
@property
def seconds(self):
return self.get_seconds(self.time_string)
def get_seconds(self, time_string):
d = datetime.datetime.strptime(time_string, "%Y-%m-%d %H:%M:%S")
return time.mktime(d.timetuple())
def get_string(self, time_sec):
return time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(time_sec))
# 對於中國的時間,是1970-01-01 08:00:00
def check_diff_time(self, t1, t2):
sec1 = int(self.get_seconds(t1))
sec2 = int(self.get_seconds(t2))
if sec1 > sec2:
secdiff = sec1 - sec2
else:
secdiff = sec2 - sec1
d = self.get_struct(self.get_string(secdiff))
day = d.tm_mday
hour = d.tm_hour
if d.tm_hour < 8:
day -= 1
hour = 24 + (d.tm_hour - 8)
else:
hour = d.tm_hour - 8
return {
"year" :d.tm_year - 1970,
"month" :d.tm_mon - 1,
"day" : day - 1,
"hour" : hour,
"min" : d.tm_min,
"sec" : d.tm_sec,
}
if __name__ == "__main__":
t1 = TIMEFORMAT("2015-04-01 12:23:23")
t2 = TIMEFORMAT("2014-03-10 22:23:23")
print t1.seconds
print t2.seconds
d = t1.check_diff_time(t1.time_string, t2.time_string)
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"])