Python:datetime模組使用
阿新 • • 發佈:2018-12-22
#!/usr/bin/env python # coding:UTF-8 """ @version: python3.x @author:曹新健 @contact: [email protected] @software: PyCharm @file: datetime模組.py @time: 2018/11/15 15:35 """ import datetime,time """ python中的datetime模組提供了五種核心物件:datetime(時間日期型別), date(日期型別), time(時間型別), tzinfo(時區型別), timedelta(時間差型別) 一、datetime.datetime(year, month, day[, hour[, minute[, second[, microsecond[,tzinfo]]]]]) 1、在例項化datetime物件時,year, month, day是必填項,hour, minute, second, microsecond(微秒), tzinfo(時區)是可選項 程式碼示例: birthday = datetime.datetime(year=1987,month=4,day=13) print(birthday) #列印1987-04-13 00:00:00 2、datetime.datetime.now():返回當前系統時間 3、datetime.datetime.now().date():返回當前日期時間的日期部分 4、datetime.datetime.now().time():返回當前日期時間的時間部分 5、datetime.datetime.fromtimestamp(timestamp),根據給定的時間戮,返回一個date物件; datetime.date.today()作用相同 6、datetime.datetime.strftime():由日期格式轉化為字串格式 7、datetime.datetime.strptime():由字串格式轉化為日期格式 程式碼示例: print(datetime.datetime(year=1987,month=4,day=13)) #1987-04-13 00:00:00 print(datetime.datetime.now()) #2018-11-15 16:14:17.069494 print(datetime.datetime.fromtimestamp(time.time())) #2018-11-15 16:14:17.069494 print(datetime.datetime.now().strftime('%Y-%m-%d %X')) #2018-11-15 16:14:17 print(datetime.datetime.strptime('Apr-20-2018 16:08:08', '%b-%d-%Y %H:%M:%S')) #2018-04-20 16:08:08 二、datetime.date(year,month,day),返回year-month-day 1、date物件和datetime物件的區別在於,date物件只能表示日期,不能表示時間(即其精確度為天)。 date例項化時須要且僅須要三個引數:year, month, day。date物件是沒有時區(tzinfo)屬性的。 2、datetime.date.fromtimestamp(timestamp),根據給定的時間戮,返回一個date物件; datetime.date.today()作用相同 3、datetime.date.isocalendar():返回格式如(year,month,day)的元組,(2018, 11, 15) 4、datetime.date.isoformat():返回格式如YYYY-MM-DD 5、datetime.date.isoweekday():返回日期的星期 6、datetime.date.replace(year,month,day):替換給定日期,但不改變原日期 7、datetime.date.strftime(format):把日期時間按照給定的format進行格式化 8、datetime.date.timetuple():返回日期對應的time.struct_time物件 9、datetime.date.weekday():返回給定日期的星期(0-6),星期一=0,星期日=6 程式碼示例: print(datetime.date.fromtimestamp(time.time())) #2018-11-15 print(datetime.date.isocalendar(datetime.datetime.now())) #(2018, 46, 4) print(datetime.date.isoformat(datetime.datetime.now())) #2018-11-15 print(datetime.date.isoweekday(datetime.datetime.now())) #4 print(datetime.date.replace(datetime.datetime.now().date(),2018,10,15)) #2018-10-15 print(datetime.date.strftime(datetime.datetime.now(),"%Y-%m-%d %X")) #2018-11-15 16:29:28 print(datetime.date.timetuple(datetime.datetime.now())) #time.struct_time(tm_year=2018, tm_mon=11, tm_mday=15, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=3, tm_yday=319, tm_isdst=-1) print(datetime.date.weekday(datetime.datetime.now())) #3 三、datetime.time(hour,minute,second,microsecond,tzoninfo) 1、和date物件相反,time物件只能用來表示時間,而不能用來表示日期。time物件所表示的時間可以精確到 微秒,而且可以具有時區(tzinfo)屬性。 2、datetime.time.replace() 3、datetime.time.strftime(format):按照format格式返回時間 4、datetime.time.tzname():返回時區名字 5、datetime.time.utcoffset():返回時區的時間偏移量 示例程式碼: print(datetime.time.replace(datetime.time(16,36,1,1),2,4,5)) #02:04:05.000001 print(datetime.time.strftime(datetime.time(16,36,1,1),"%X")) #16:36:01 print(datetime.time.tzname(datetime.time(16,36,1,1,datetime.timezone.utc))) #UTC print(datetime.time.utcoffset(datetime.time(16,36,1,1,datetime.timezone (offset=datetime.timedelta(hours=6),name="Asia/Beijing")))) #6:00:00 四、datetime.datetime.timedelta用於計算兩個日期之間的差值 timedelta物件表示一個時間段,timedelta物件可以通過手動例項化得到,也可以通過上述三個物件 (datetime, date, time)相減得到。 手動例項化timedelta時,可以傳入的引數有:days, seconds, microseconds, milliseconds, minutes, hours, weeks 程式碼示例: now = datetime.datetime.now() last = datetime.datetime(year=1987,month=4,day=13,hour=8) delta = now - last print(delta) #11539 days, 8:54:23.708372 五、tzinfo物件 tzinfo物件是用來表示該時區相對UTC時間差值,和該地區是否執行夏時令的物件。datetime模組所提供的 的tzinfo物件是一個抽象基類,也就是說我們不應該直接例項化此物件, 而應該以此類為基類,定義出子 類,然後再例項化以供使用。在子類化的時候,需要自定義很多方法,非常繁瑣。還好python提供了一個 pytz的庫,裡面自帶了適合各個國家和時區的tzinfo物件,我們可以直接使用。 """