datetime的基本操作

本文深入介绍了Python中的datetime模块,包括datetime、date、time、timedelta对象的基本操作,如创建、转换、时间戳计算等。还演示了如何进行日期和时间的格式化,以及与字符串之间的转换。此外,文章提到了time模块与datetime模块的区别,并展示了timedelta对象在时间间隔计算中的应用。
摘要由CSDN通过智能技术生成

datetime的基本操作

python中的datetime模块提供了操作日期和时间功能,是time模块的超集, 该模块提供了五种核心对象:datetime(时间日期类型), date(日期类型), time(时间类型), timedelta(时间差类型),tzinfo(时区类型,暂不介绍)


datetime 对象

datetime对象可以用来表示精确的日期和时间,最常用的就是这个,常用的方法如下

from datetime import datetime
# 实例对象
print(datetime(year=2020, month=6, day=1, hour=12, minute=0, second=0))

# 获取当前系统时间,精确到微秒
now_time = datetime.now()
print(now_time)

# 转换成时间戳,类型是float
now_timestamp = now_time.timestamp()
print(now_timestamp)

在实例化datetime对象时,year, month, day是必填项,hour, minute, second, microsecond(微秒), tzinfo(时区)是可选项

当hour,minute,second,microsecond缺省时,默认都是0,tzinfo缺省时,默认时None

datetime可以用其属性year,month等获取某个时间数据

from datetime import datetime
# 实例对象
datetime1 = datetime(year=2020, month=6, day=1)
# 获取年份,类型是int
print(datetime1.year)
# 获取小时
print(datetime1.hour)

datetime.timestamp方法,可以将datetime对象转换为时间戳

datetime.replace方法,可以将datetime对象中的某个/些值替换,来生成一个新的datetime对象

datetime.utcnow方法,可以获取现在的UTC时间


和str之间的转换

  1. strftime:使用strftime可以将datetime类型转化为指定的字符串格式,需要使用格式符来指定格式,注意:,这个函数不支持中文,所以可以先用占位符替代中文,转换成字符串后,再利用format将占位符变为中文字符

  2. strptime:strptime可以将字符串按照特定的格式解析为datetime对象,这个支持中文

    第一个参数是字符串

    第二个参数是格式

  3. str:直接使用强制类型转换,可以将其转换为YYYY-MM-DD HH:MM:SS.mmmmmm格式

from datetime import datetime
# 实例对象
now_datetime = datetime.now()

# 转换成指定格式,不支持中文
str_datetime = now_datetime.strftime('%Y{}%m{}%d{}  %H{}%M{}%S{}%f{} %a').format('年','月','日','时','分','秒','毫秒')
print(str_datetime)

# 将字符串转换为datetime,第一个参数指定字符串,第二个指定格式
now_datetime = datetime.strptime(str_datetime, '%Y年%m月%d日  %H时%M分%S秒%f毫秒 %a')
print(now_datetime)

# 转换为YYYY-MM-DD HH:MM:SS.mmmmmm格式
print(datetime.isoformat(now_datetime))

常用时间格式符

格式符说明
%Y四个数字表示的年份 2015
%m返回月份 范围[0,12]
%d返回的是当前时间是当前月的第几天
%H以24小时制表示当前小时
%M返回分钟数 范围 [0,59]
%S返回秒数 范围 [0,61]。。。手册说明的
%f微秒的表示: 范围: [0,999999]
%a星期的英文单词的缩写:如星期一, 则返回 Mon

详细格式符如下

格式符说明
%a星期的英文单词的缩写:如星期一, 则返回 Mon
%A星期的英文单词的全拼:如星期一,返回 Monday
%b月份的英文单词的缩写:如一月, 则返回 Jan
%B月份的引文单词的缩写:如一月, 则返回 January
%c返回datetime的字符串表示,如03/08/15 23:01:26
%d返回的是当前时间是当前月的第几天
%f微秒的表示: 范围: [0,999999]
%H以24小时制表示当前小时
%I以12小时制表示当前小时
%j返回 当天是当年的第几天 范围[001,366]
%m返回月份 范围[0,12]
%M返回分钟数 范围 [0,59]
%P返回是上午还是下午–AM or PM
%S返回秒数 范围 [0,61]。。。手册说明的
%U返回当周是当年的第几周 以周日为第一天
%W返回当周是当年的第几周 以周一为第一天
%w当天在当周的天数,范围为[0, 6],6表示星期天
%x日期的字符串表示 :03/08/15
%X时间的字符串表示 :23:22:08
%y两个数字表示的年份 15
%Y四个数字表示的年份 2015
%z与utc时间的间隔 (如果是本地时间,返回空字符串)
%Z时区名称(如果是本地时间,返回空字符串)

date 对象

date对象和datetime对象的区别在于,date对象只能表示日期,不能表示时间(即其精确度为天)。date实例化时须要且仅须要三个参数:year, month, day。date对象是没有时区(tzinfo)属性的。

from datetime import date, datetime
# 实例对象,获取今天的日期
now_date = date.today()
print(now_date)
# 将datetime转换为date
now_date = datetime.now().date()
print(now_date)

time对象

和date对象相反,time对象只能用来表示时间,而不能用来表示日期。time对象所表示的时间可以精确到微秒,而且可以具有时区(tzinfo)属性。

from datetime import datetime,time
# 实例对象
# hours, minute, second,microsecond, tzinfo都是可选参
time1 = time(hour=1,minute=10,second=30)
print(time1)

# 获取当前的时间,转换为time
now_time = datetime.now().time()
print(now_time)

这里要注意,python中还有另外一个模块我们经常用到的模块:time,这个模块也含有用来表示时间、日期对象的函数,但因为该模块下的函数都是对同名C函数的直接调用,所以返回的对象都不太pythonic,所以我们一般不用,经常使用的就两个函数:time.sleep()time.time()

import time
print(time.time()) #返回当前时间戳(s)
time.sleep(5)
print(time.time())  # 程序进入睡眠5s

timedelta对象

timedelta对象表示一个时间段,timedelta对象可以通过手动实例化得到,也可以通过上述三个对象(datetime, date, time)相减得到。

通常用于时间的加减计算

from datetime import datetime, timedelta
import time
now_datetime = datetime.now()
# 365天的时间段
delta = timedelta(days=365)
# 365天后的时间
print(now_datetime+delta)


# 计算两个时间的差值
time.sleep(5)
delta = datetime.now()-now_datetime
print(delta)

手动实例化timedelta时,可以传入的参数有:days, seconds, microseconds, milliseconds, minutes, hours, weeks。

参考网址:https://www.jianshu.com/p/1957c4cab0a3

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值