目录
简介
一、date类
(一)date 类属性
(二)date 类方法
(三)实例属性
(四)实例的方法
二、time类
(一)time 类属性
(二)time 实例属性
(三)实例方法
三、datetime类
(一)datetime 类属性
(二)datetime 类方法
(三)实例属性
(四)实例方法
四、timedelta类
(一)timedelta 类属性
(二)timedelta 实例属性
(三)timedelta 实例方法
用法
五、时间类型转换
(一)str 与 datetime 转换
1.str->datetime
2.datetime->str
(二)date/datetime与时间戳转换
1.时间戳->datetime
2.datetime->时间戳
(三)时间戳 timestamp 与字符串转换
1.时间戳->str
2.str->时间戳
datetime 模块是对 time 模块的封装,这个模块提供了这几个类:date(日期)、time(时间)、datetime(日期时间,功能覆盖前两者)、timedelta(时间差)、tzinfo。文章用于记录模块的常用属性和方法(一些不太常用的可能不会涉及)
python 里表示时间的格式有三种:时间戳、元组、格式化时间。与time模块类似,datetime 模块也能够将 datetime 类型转换成这三种类型。需要注意的是,str 和时间戳的转换,都需要先转成 datetime,datetime 相当于时间处理的中间桥梁。
对于三种时间表示方式、时间计算标准及 time 模块的使用结合另一篇文章:python的time模块_python中的time模块_带带琪宝的博客-CSDN博客
datetime.date(year,month,day) 表示年、月、日等日期
from datetime import date
import time
导包还出现了个报错:因为取的文件名和包名重复了Python报错“ImportError:most likely due to a circular import“记录_importerror: cannot import name 'datetime' from 'p-CSDN博客
print(date.min)
0001-01-01
print(date.max)
9999-12-31
print(date.resolution)
1 day, 0:00:00
day=date.today() # 返回当前格式化的年月日
print(day)
print(type(day)) # date类型
2023-11-08
print(date.fromtimestamp(666666666))
1991-02-16
时间戳:格林威治时间1970年01月01日00时00分00秒(北京时间1970年01月01日08时00分00秒)起至现在的总秒数
date类的实例有年月日三个属性,即
常用的如下
day=date.today()
print(day.year) # 返回年份2023,也可返回月、日
2023
print(day.replace(1999,4,26)) # 修改时间
1999-04-26
print(day.timetuple()) # 返回时间元组
time.struct_time(tm_year=2023, tm_mon=11, tm_mday=8, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=2, tm_yday=312, tm_isdst=-1)
print(day.weekday()) # 返回星期几(由0开始)
2
print(day.isoweekday()) # 返回星期几(由1开始)
3
print(day.isoformat()) # 以'YYYY-MM-DD'形式字符串返回
2023-11-08
原自:python的datetime库使用详解_流光、月影的博客-CSDN博客
time 对象表示一天中某时间
print(time.min)
00:00:00
print(time.max)
23:59:59.999999
print(time.resolution)
0:00:00.000001
datetime.time(hour=0, minute=0, second=0, microsecond=0, tzinfo=None)
t=time(hour=20, minute=30, second=14, microsecond=6666, tzinfo=None)
print(time.isoformat(t)) # 返回格式化日期字符串,如 "HH:MM:SS.mmmmmm" 的字符串
20:30:14.006666
datetime.datetime() 表示日期和时间表示的类,是 date 对象和 time 对象的结合体,包含他们的所有信息,功能也覆盖 date 和 time 类
print(datetime.min)
0001-01-01 00:00:00
print(datetime.max)
9999-12-31 23:59:59.999999
print(datetime.resolution)
0:00:00.000001
print(datetime.today())
print(datetime.now())
print(datetime.utcnow())
2023-11-09 17:47:16.834907
2023-11-09 17:47:16.835902
2023-11-09 09:47:16.835902
print(datetime.fromtimestamp(2222222222, tz=None))
print(datetime.utcfromtimestamp(2222222222))
2040-06-02 11:57:02
2040-06-02 03:57:02
datetime (year, month, day, hour=0, minute=0,second=0, microsecond=0)
hour、minute、second、microsecond 参数可以全部或部分省略。
datetime 具有绝大多数 date 和 time的属性,参考上方 time 与 date 的实例方法
dt=datetime (year=2023, month=12, day=25, hour=20, minute=30,second=15, microsecond=6666)
print(dt)
print(dt.date())
print(dt.time())
2023-12-25 20:30:15.006666
2023-12-25
20:30:15.006666
timedelta 表示的是一个时间段,即两个日期 date 或者日期时间 datetime 之间的差,Python 中 pandas 与 datetime 的 timedelta 可以相互换算
datetime.timedelta(days=0, seconds=0, microseconds=0, milliseconds=0, minutes=0, hours=0, weeks=0)
print(timedelta.min)
-999999999 days, 0:00:00
print(timedelta.max)
999999999 days, 23:59:59.999999
print(timedelta.resolution)
0:00:00.000001
datetime.timedelta(days=0, seconds=0, microseconds=0, milliseconds=0, minutes=0, hours=0, weeks=0)
timedelta 的实例属性有日期、秒、微秒,其他参数都是需要转换的
1.
t1=datetime.now() # 当前时间
t2=datetime (year=1999, month=4, day=26, hour=0, minute=0,second=0, microsecond=0)
# 构造一个时间
print(t1)
print(t2)
print(timedelta.total_seconds(t1-t2)) # 进行运算
2023-11-10 12:32:47.457375
1999-04-26 00:00:00
774534767.457375
2.
t1=datetime.now()
t2=timedelta(days=1)
print(t1)
print(t2)
print(t1+t2) # 加一天
2023-11-10 13:41:33.859151
1 day, 0:00:00
2023-11-11 13:41:33.859151
主要是 datetime,str,时间戳之间的转换
python中时间日期格式化符号:
a = '1999-04-01 10:15:55'
b = datetime.strptime(a,'%Y-%m-%d %H:%M:%S')
print(a)
print(b)
print(type(a))
print(type(b))
1999-04-01 10:15:55
1999-04-01 10:15:55
today = datetime.now()
s=today.strftime('%Y-%m-%d %H:%M:%S:%f')
print(today)
print(s)
print(type(today))
print(type(s))
2023-11-10 14:37:13.912090
2023-11-10 14:37:13:912090
需要借助 time 中时间戳方法
import time
t=time.time() # 可以获得当前时间戳
print(t)
print(datetime.fromtimestamp(t))
1699601829.9119656
2023-11-10 15:37:09.911966
t=datetime.timestamp(datetime.now())
print(t)
print(datetime.fromtimestamp(t))
1699602673.122222
2023-11-10 15:51:13.122222
字符串与时间戳不能直接进行转换,需要借助 datetime 作为桥梁
时间戳->datetime->str
d=datetime.timestamp(datetime.now()) # 获得一个时间戳
s=datetime.strftime(datetime.fromtimestamp(d),'%Y-%m-%d %H:%M:%S') # 时间戳->datetime->str
print(d)
print(s)
print(type(d))
print(type(s))
1699603804.461055
2023-11-10 16:10:04
str->datetime->时间戳
s='20231225' # 字符串
f=datetime.strptime(s,'%Y%m%d') # 转为datetime
d=f.timestamp() # 得到时间戳
print(s)
print(d)
print(type(s))
print(type(d))
20231225
1703433600.0