1、核心逻辑
time,表示时间的类
datetime,表示日期和时间的类
timedelta,表示时间间隔,即两个时间点的间隔
tzinfo,与时区有关的信息
( 这些类的对象都是不可变的 )
(类有类方法,类方法里有方法,方法继承了类方法)
2、date、time和datetime对象
下面介绍最基本3个对象的最基本用法。首先,从datetime模块导入3个对象
In [1]: from datetime import date,time,datetime
构造一个日期date实例,2020年9月1日:
In [2]: date(2020,9,1)Out[2]: datetime.date(2020, 9, 1)
构造一个时间time实例,10点10分0秒:
In [3]: time(10,10,0)Out[3]: datetime.time(10, 10)
构造一个日期+时间的完整datetime实例,2020年9月1日 10点10分0秒:
In [4]: datetime(2020,9,1,10,10,10)Out[4]: datetime.datetime(2020, 9, 1, 10, 10, 10)
datatime
datetime.now() & datetime.today()
import datetimeprint(datetime.datetime.now())# datetime.today()#2020-09-21 23:13:05.245157print(datetime.datetime.today())#2020-09-21 23:13:57.062886
datetime.strptime()
打印格式化字符,常用的几个:
| 字符 | 意义 |
|---|---|
| %Y | %Y 四位数的年份表示(000-9999) |
| %y | 两位数的年份表示(00-99) |
| %m | 月份(01 - 12) |
| %d | 一个月中的第几天(01 - 31) |
| %H | 一天中的第几个小时(24小时制,00 - 23) |
| %I | 12小时制小时数(01-12) |
| %M | 分钟数(00 - 59) |
| %S | 秒(01 - 61) |
| %w | 一个星期中的第几天(0 - 6,0是星期天) |
| %Z | 时区的名字(如果不存在为空字符) |
print(datetime.datetime.strptime('2020/08/09',format('%Y/%m/%d')))#2020-08-09 00:00:00print(datetime.datetime.strptime('20-08-09',format('%y-%m-%d')))#2020-08-09 00:00:00
datetime.strftime()
接收以时间元组,并返回以可读字符串表示的当地时间,格式由参数format决定。
dt = datetime.datetime.now()print("======================")print('时间:(%Y-%m-%d %H:%M:%S %f): ',dt.strftime( '%Y-%m-%d %H:%M:%S %f' ) )print('时间:(%Y-%m-%d %H:%M:%S %p): ' , dt.strftime( '%y-%m-%d %I:%M:%S %p' ) )print('星期缩写%%a: %s ' % dt.strftime( '%a' ))print('星期全拼%%A: %s ' % dt.strftime( '%A' ))print('月份缩写%%b: %s ' % dt.strftime( '%b' ) )print('月份全批%%B: %s ' % dt.strftime( '%B' ))print('日期时间%%c: %s ' % dt.strftime( '%c' ) )print('今天是这周的第%s天 ' % dt.strftime( '%w' ) )print( '今天是今年的第%s天 ' % dt.strftime( '%j' ))print('今周是今年的第%s周 ' % dt.strftime( '%U' ) )print('今天是当月的第%s天 ' % dt.strftime( '%d' ))'''======================时间:(%Y-%m-%d %H:%M:%S %f): 2020-09-21 23:30:51 573645时间:(%Y-%m-%d %H:%M:%S %p): 20-09-21 11:30:51 PM星期缩写%a: Mon星期全拼%A: Monday月份缩写%b: Sep月份全批%B: September日期时间%c: Mon Sep 21 23:30:51 2020今天是这周的第1天今天是今年的第265天今周是今年的第38周今天是当月的第21天'''
replace(year[,month[,day]])
replace(year[,month[,day]]) 生成并返回一个新的日期对象,原日期对象不变print(datetime.date.today().replace(year=2019))
date
常用的方法:1 构造方法 def __init__(self, year: int, month: int, day: int) -> None: ...print(datetime.date(2019,6,30))2 replace(year[,month[,day]]) 生成并返回一个新的日期对象,原日期对象不变print(datetime.date.today().replace(year=2019))3 d.strftime() 自定义格式化字符串(和time模块的strftime()方法相同)print(datetime.date.today().strftime('%Y-%m-%d-%a-%I'))4 d.year d.month d.day
3 时间日期的应用场景
1.简介
2.示例
# 引入模块import time, datetime
2.1 str类型的日期转换为时间戳
# 字符类型的时间testStr = '2020-09-21 23:26:33'# 转为 时间数组timeArray = time.strptime(testStr, "%Y-%m-%d %H:%M:%S")print(timeArray)# timeArray可以调用tm_year等print(timeArray.tm_year) # 2020# 转为时间戳timeStamp = int(time.mktime(timeArray))print(timeStamp) # 1600701993# 结果如下time.struct_time(tm_year=2020, tm_mon=9, tm_mday=21, tm_hour=23, tm_min=26, tm_sec=33, tm_wday=0, tm_yday=265, tm_isdst=-1)20201600701993
2.2 时间戳转换为指定格式的日期
# 使用timetimeStamp = 1600701993timeArray = time.localtime(timeStamp)otherStyleTime = time.strftime("%Y--%m--%d %H:%M:%S", timeArray)print(otherStyleTime) # 2020--09--21 23:26:33# 使用datetimetimeStamp = 1600101993dateArray = datetime.datetime.fromtimestamp(timeStamp)otherStyleTime = dateArray.strftime("%Y--%m--%d %H:%M:%S")print(otherStyleTime) # 2020--09--15 00:46:33# 使用datetime,指定utc时间,相差8小时timeStamp = 1600201993dateArray = datetime.datetime.utcfromtimestamp(timeStamp)otherStyleTime = dateArray.strftime("%Y--%m--%d %H:%M:%S")print(otherStyleTime) # 2020--09--15 20:33:13
