總結(jié)一下python中對日期和時間的常用處理方法兰粉。
準(zhǔn)備
import time,datetime
常用操作
輸出當(dāng)前的日期時間
方式一:
now = time.localtime()
print '【Output】'
print type(now)
print now
print now[:3]
【Output】
<type 'time.struct_time'>
time.struct_time(tm_year=2017, tm_mon=8, tm_mday=21, tm_hour=23, tm_min=15, tm_sec=42, tm_wday=0, tm_yday=233, tm_isdst=0)
(2017, 8, 21)
輸出當(dāng)前時間戳(單位:秒):
print '【Output】'
print time.time()
【Output】
1503329021.99
方式二:
now = datetime.datetime.now()
print '【Output】'
print now.strftime('%Y-%m-%d %H:%M:%S')
【Output】
2017-08-21 23:23:46
格式化輸出當(dāng)前時間
t = time.localtime()
print '【Output】'
print time.strftime('%Y-%m-%d %H:%M:%S',t)
time.sleep(2)
print time.strftime('%Y-%m-%d %H:%M:%S') # 如果不指定時間芭挽,輸出的就是當(dāng)前時間
【Output】
2017-08-21 23:17:57
2017-08-21 23:17:59
附:格式化字符串總結(jié)
- %a 英文星期簡稱
- %A 英文星期全稱
- %b 英文月份簡稱
- %B 英文月份全稱
- %c 本地日期時間
- %d 日期工扎,1~31
- %H 小時脸秽,0~23
- %I 小時乓梨,0~12
- %m 月惜颇,01~12
- %M 分鐘,0~59
- %S 秒缸逃,0~59
- %j 年中當(dāng)天的天數(shù)
- %w 星期數(shù),1~7
- %W 年中的第幾周
- %x 當(dāng)天日期厂抽,格式:01/31/17
- %X 本地的當(dāng)天時間
- %y 年份,00~99
- %Y 年份完整拼寫
字符串轉(zhuǎn)為日期時間對象
t = time.strptime('2000-1-1 10:00','%Y-%m-%d %H:%M') # 注:前后格式要保持一致丁眼,否則轉(zhuǎn)換會出錯
print '【Output】'
print type(t)
print t
【Output】
<type 'time.struct_time'>
time.struct_time(tm_year=2000, tm_mon=1, tm_mday=1, tm_hour=10, tm_min=0, tm_sec=0, tm_wday=5, tm_yday=1, tm_isdst=-1)
構(gòu)造datetime對象
dt = datetime.datetime(2010,1,1,23)
print '【Output】'
print type(dt)
print dt
【Output】
<type 'datetime.datetime'>
2010-01-01 23:00:00
注:月份的數(shù)值是從1開始的筷凤。
將struct_time對象轉(zhuǎn)為時間戳(秒)
now = time.localtime()
timestamp = time.mktime(now)
print '【Output】'
print timestamp
【Output】
1503329307.0
將時間戳(秒)轉(zhuǎn)為struct_time對象
timestamp = 1480000000
print '【Output】'
print time.localtime(timestamp)
【Output】
time.struct_time(tm_year=2016, tm_mon=11, tm_mday=24, tm_hour=23, tm_min=6, tm_sec=40, tm_wday=3, tm_yday=329, tm_isdst=0)
求一個日期n天之后(或之前)的日期
In [10]: d1 = datetime.datetime(2012,4,15)
In [11]: d1
Out[11]: datetime.datetime(2012, 4, 15, 0, 0)
# 求2012-4-15后80天的日期
In [12]: d2 = d1 + datetime.timedelta(days = 80)
In [13]: d2
Out[13]: datetime.datetime(2012, 7, 4, 0, 0)
# 天數(shù)差值可以是一個負(fù)數(shù),表示求一個日期之前n天的日期
In [21]: d2 = d1 + datetime.timedelta(days = -1)
In [23]: d2
Out[23]: datetime.datetime(2012, 4, 14, 0, 0)
求兩個日期之間相差的天數(shù)
In [24]: d1 = datetime.datetime(2012,4,15)
In [25]: d2 = datetime.datetime(2012,4,18)
In [26]: d2 - d1
Out[26]: datetime.timedelta(3)
In [27]: d1 - d2
Out[27]: datetime.timedelta(-3)
In [28]: d1 = datetime.datetime(2012,4,15,11,0,0)
In [29]: d2 = datetime.datetime(2012,4,18,15,0,0)
# 這里的3表示相差3天苞七,14400表示再多出來的秒數(shù)
In [30]: d2-d1
Out[30]: datetime.timedelta(3, 14400)