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)