Python基礎模塊:datetime模塊
datetime是Python處理日期和時間的標準庫。
它包含了五個類:datetime,date,time,timedelta, tzinfo
datetime數據對象:使用strptime把字符串日期轉變為此對象,可以使用datetime裏的一些方法和屬性,比如date(),time(),year,month,day,strftime(),replace()等。
導入語句:from datetime import datetime,date,time,timedelta, timezone,把所有類全都都導入。
如果只導入包名:import datetime,使用的時候必須datetime.datetime,datetime.time,datetime.date
其它時間相關的包:pytz,tzlocal,calendar
datetime類 | |||
方法名 | 作用 | 示例 | 結果 |
strptime(字符串,日期格式) | 把字符串日期轉換成datetime對象的實例 轉換後的格式可以使用datetime類方法 | datetime.strptime('2018-01-18 06:25:38.22222',"%Y-%m-%d %H:%M:%S.22222") | 2018-01-18 06:25:38 |
strftime(自定義格式) | 自已定顯示格式,datetime實例可以使用 | dd=datetime.strptime('2018-5-6','%Y-%m-%d') print(dd.year) | 2018 |
combine(date,time) | 根據date和time,創建一個datetime對象 | datetime.combine(date(2018,12,1),time(12,10,3)) | 2018-12-01 12:10:03 |
fromtimestamp(時間戳[,時區]) | 把時間戳轉換成datetime對象 缺省時區顯示計算機當前時區 | datetime.fromtimestamp(441188) | 1970-01-06 10:33:08 |
utcfromtimestamp(時間戳) | 時間戳參數必須 把時間戳轉換成UTC標準時區的datetime對象 | datetime.utcfromtimestamp(441188) | 1970-01-06 02:33:08 |
timestamp(datetime對象) | 把datetime對象轉換成時間戳 | dd=datetime.strptime('2018-5-6','%Y-%m-%d') datetime.timestamp(dd) | 1525564800.0 |
timetuple(datetime對象) | 返回struc_time格式的元組 | datetime.timetuple(datetime.now()) | time.struct_time(tm_year=2018, tm_mon=1, tm_mday=24, tm_hour=7, tm_min=44, tm_sec=17, tm_wday=2, tm_yday=24, tm_isdst=-1) |
now(時區) | 獲取當前系統datetime格式時間 缺省不帶時區,返回的是本機時區 | datetime.now() | 2018-01-19 11:06:03.903022 |
utcnow() | 獲取當前系統datetime格式時間 缺省不帶時區,返回的是標準時區 | datetime.utcnow() | 2018-01-19 03:06:03.903022 |
astimezone(timezone格式) | 帶utc格式的時區轉換時區 它會改變原datetime時間的時區 | datetime_utc = datetime.utcnow().replace(tzinfo=timezone.utc) print(datetime_utc.astimezone(timezone(timedelta(hours=8)))) | 2018-02-01 15:49:49.578894+08:00 |
today() | 獲取當前系統datetime格式時間 和不帶時區的now()結果一樣 | datetime.today() | 2018-01-19 03:06:03.903022 |
replace(實參) | 改變datetime時間對象的屬性值 | datetime.now().replace(year=2002,month = 11) | 2002-11-19 04:04:10.917801 |
datetime格式對象的屬性 | date()--日期 year--年 month--月 day--天 time()--時間 hour--小時 minute--分鐘 second--秒 microsecond--微秒 resolution--當前時間格式的最小單位 tzinfo--時區 | print(datetime.now().date()) print(datetime.now().year) | 2018-01-19 2018 |
- | 計算兩個時間的差值,結果分date和time 兩個時間必須是datetime對象 最小可以支持到微秒 | n = datetime(10,10,10,10,10) t = datetime(8,8,8,8,8) print(n-t) | 793 days, 2:02:00 |
date類 | |||
方法名 | 作用 | 示例 | 結果 |
date(年,月,日) | 年月日不可缺省 把年月日參數轉換成date格式 轉換完可以使用date格式對象的屬性 | date(2002,2,2) | 2002-02-02 |
date格式對象的屬性 | year--年 month--月 day--天 | date(2002,2,2).year date(2002,2,2).month date(2002,2,2).day
| 2002 2 2 |
timetupel(date對象) | 返回struc_time格式元組 | s = date(1,2,1) timetuple(s) | time.struct_time(tm_year=1, tm_mon=2, tm_mday=1, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=3, tm_yday=32, tm_isdst=-1) |
strftime(date對象,格式符) | 返回指定格式化符號的字符串 格式化符號%Y,%m,%d,%y,%w等和天數相關格式 具體參照time模塊的格式說明 | s = date(1,2,1) date.strftime(s,"%y,%W,%Y,%m,%d") | 01,05,1,02,01 |
replace(實參) | 改變date時間對象的屬性值 | s.replace(day = 9) | 0001-02-09 |
toordinal() | 計算現在時間距離1年1月1日多少天 | s.toodinal() | 32 |
weekday() | 返回星期,星期一為0,星期日為6 | s.weekday() | 3 |
iosweekday() | 返回星期,星期一為1,星期日為7 | s.iosweekday() | (1, 5, 4) |
iosformat() | 返回格式為,“年-月-日”的日期 | s.iosformat() | 0001-02-01 |
ctime() | 返回字符串型日期 | s.ctime() | Thu Feb 1 00:00:00 0001 |
time類 | |||
方法名 | 作用 | 示例 | 結果 |
time(小時,分,秒,毫秒) | 返回一個time格式的時間 缺省參數,顯示00:00:00 | time(12,35,21,965) | 12:35:21.000965 |
time屬性。 | 返回時間的小時、分鐘、秒、毫秒 hour--小時 minute--分鐘 second--秒 microsecond--微秒 tzinfo--時區 | t = time(12,35,21,965) print(t.hour) print(t.minute) print(t.second) print(t.microsecond) print(t.tzinfo) |
12 None |
replace(實參) | 可以替換指定部分time格式的時間 hour,minute,second,microsecond,tzinfo | print(t.replace(minute=3)) | 12:03:21.000965 |
isoformat() | 返回一個‘HH:MM:SS.%f'格式的時間字符串 | print(t.isoformat()) | 12:35:21.000965 |
strftime(time時間格式,字符串格式符) | 將時間格式轉變成指定字符串格式 | print(t.strftime("Hours:%H,%M,%S")) 或 print(time.strftime(t,"Hours:%H,%M,%S")) | Hours:12,35,21 |
timedelta類 | |||
timedalte 對象表示兩個時間的差值,可以指定天、時間、周。 *實際上就是datetime的-號運算結果。使用timedelta格式化以後重新與datetime對象進行加、減運算,計算出指定日期。 | |||
屬性 | 說明 | 示例 | 結果 |
min | 顯示timedelta支持的最小時間差 | timedelta.min | -999999999 days, 0:00:00 |
max | 顯示timedelta支持的最大時間差 | timedelta.max | 999999999 days, 23:59:59.999999 |
resolution | 顯示timedelta支持最小時間單位 | timedelta.resolution | 0:00:00.000001 |
timedelta參數 | days--天 hours--小時 seconds--秒 microseconds--微秒 milliseconds--毫秒 weeks--周 | print(timedelta(days = 1)) print(timedelta(hours = 1)) print(timedelta(seconds = 1)) print(timedelta(microseconds = 1)) print(timedelta(milliseconds = 1)) print(timedelta(weeks = 1)) | 1 day, 0:00:00 1:00:00 0:00:01 0:00:00.000001 0:00:00.001000 7 days, 0:00:00 |
timedelta對象屬性 | days--天 seconds--秒 microseconds--微秒 | delta = timedelta.max print(delta.days) print(delta.seconds) print(delta.microseconds) | 999999999 |
timezone類 | |||
utc | 獲取標準時區0 | ||
astimezone(timedelta格式) | 改變時區 | ||
標準變換時區語句: utc_date= datetime.utcnow().replace(tzinfo=timezone.utc) bj_utc = utc_date.astimezone(timezone(timedelta(hours = 8))) 結果: 2018-02-01 08:23:19.612199+00:00 |
例子:
一、當前時間加一個月
now_time = datetime.now()
next_time = now_time.replace(month = now_time.month+1)
Python基礎模塊:datetime模塊