python日期和时间的常用操作
datetime类
参考资料:https://www.jianshu.com/p/81868ad7417d
datetime类是Python处理日期和时间的标准库。datetime是date与time的结合体,包括date与time的所有信息
构造函数如下:
datetime.datetime(year, month, day[, hour[, minute[, second[, microsecond[, tzinfo]]]]])
格式字符串datetime.strftime(format)
变量 | 说明 |
---|---|
%a | 星期的简写。如星期三为Web |
%A | 星期的全写。如星期三为Wednesday |
%b | 月份的简写。如4月份为Apr |
%B | 月份的全写。如4月份为April |
%c | 日期时间的字符串表示。(如:04/07/10 10:43:39) |
%d | 日在这个月中的天数(是这个月的第几天) |
%f | 微秒(范围[0,999999]) |
%H | 小时(24小时制,[0,23]) |
%I | 小时(12小时制,[0,11]) |
%j | 日在年中的天数 [001,366](是当年的第几天) |
%m | 月份([01,12]) |
%M | 分钟([00,59]) |
%p | AM或者PM |
%S | 秒(范围为[00,61]) |
%U | 周在当年的周数当年的第几周,星期天作为周的第一天 |
%w | 今天在这周的天数,范围为[0,6],6表示星期天 |
%W | 周在当年的周数(是当年的第几周),星期一作为周的第一天 |
%x | 日期字符串(如:04/07/10) |
%X | 时间字符串(如:10:43:39) |
%y | 2个数字表示的年份 |
%Y | 4个数字表示的年份 |
%z | 与utc时间的间隔(如果是本地时间,返回空字符串) |
%Z | 时区名称(如果是本地时间,返回空字符串) |
%% | %%=>% |
dt = datetime.now()
print('(%Y-%m-%d %H:%M:%S %f):'+ str(dt.strftime('%Y-%m-%d %H:%M:%S %f')))
#(%Y-%m-%d %H:%M:%S %f): 2021-07-16 20:32:19 033740
print('(%Y-%m-%d %H:%M:%S %p):'+str(dt.strftime('%y-%m-%d %I:%M:%S %p')))
#(%Y-%m-%d %H:%M:%S %p): 21-07-16 08:32:19 PM
print('%%a: %s' % dt.strftime('%a'))
#%a: Sun
print('%%A: %s' % dt.strftime('%A'))
#%A: Sunday
print('%%b: %s' % dt.strftime('%b'))
#%b: Jul
print('%%B: %s' % dt.strftime('%B'))
#%B: July
print('日期时间%%c: %s' % dt.strftime('%c'))
#日期时间%c: Sun Jul 16 20:32:19 2021
print('日期%%x:%s' % dt.strftime('%x'))
#日期%x:07/16/21
print('时间%%X:%s' % dt.strftime('%X'))
#时间%X:20:32:19
print('今天是这周的第%s天' % dt.strftime('%w'))
#今天是这周的第0天
print('今天是今年的第%s天' % dt.strftime('%j'))
#今天是今年的第197天
print('今周是今年的第%s周' % dt.strftime('%U'))
#今周是今年的第29周
日期和时间的常用操作
获取当前、指定日期和时间
now = datetime.now() # 获取当前datetime
print(now)
#2021-07-19 00:19:26.661741
print(type(now))
#<class 'datetime.datetime'>
datetime.now()返回当前日期和时间,其类型是datetime。
要指定某个日期和时间,我们直接用参数构造一个datetime:
dt = datetime(2021,7,19,8,30) # 用指定日期时间创建datetime
print(dt)
#2021-07-19 08:30:00
datetime加减
对日期和时间进行加减实际上就是把datetime往后或往前计算,得到新的datetime。加减可以直接用+和-运算符,不过需要导入timedelta这个类:
now = datetime.now()
#now
datetime.datetime(2021, 7, 19, 0, 53, 2, 335063)
now + timedelta(hours=10)
#datetime.datetime(2021, 7, 19, 5, 53, 2, 335063)
now - timedelta(days=2)
#datetime.datetime(2021, 7, 17, 0, 53, 2, 335063)
now + timedelta(days=3, hours=10)
#datetime.datetime(2021, 7, 22, 10, 53, 2, 335063)