首页 > 技术文章 > python日期和时间的常用操作

zibinchen 2021-05-29 22:46 原文

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)

推荐阅读