计算机中的时间
详见 https://www.malaoshi.top/show_1IX7UEucQffQ.html
datetime模块
datetime模块是处理日期、时间的模块。(还有其他关于日期时间的内置模块,以及第三方模块)
该模块有6个类:
- date 日期对象,常用的属性有year, month, day
- time 时间对象
- datetime 日期时间对象,常用的属性有hour, minute, second, microsecond
- datetime_CAPI 日期时间对象C语言接口
- timedelta 时间间隔,即两个时间点之间的长度
- tzinfo 时区信息对象
详细参看官方文档:
https://docs.python.org/3/library/datetime.html#module-datetime
感谢中文文档:
https://blog.csdn.net/cmzsteven/article/details/64906245
导入 datetime
使用前需要导入 datetime
import datetime
datetime类
初始化
datetime.datetime(year, month, day, hour=0, minute=0, second=0)
参数说明
- year:必须
- month:必须。1 <= month <= 12
- day:必须。
- hour:0 <= hour < 24
- minute:0 <= minute < 60
- second:0 <= second < 60
返回
datetime对象
today()
返回当前系统时间的datetime对象
>import datetime
>datetime.datetime.today()
执行结果:
datetime.datetime(2024, 4, 10, 22, 58, 30, 181873)
now([tz])
返回当前系统时间的datetime对象,可以设置时区,不设置时区,同today()
>import datetime
>datetime.datetime.now()
#设置世界统一时间utc
>datetime.datetime.now(datetime.timezone.utc)
执行结果:
datetime.datetime(2024, 4, 10, 23, 0, 0, 331462)
截止到发本文时,需要用第三方模块才能调用该方法设置时区
utcnow()
返回当前时间(世界统一时间utc)的datetime对象
>import datetime
#设置世界统一时间utc
>datetime.datetime.utcnow()
执行结果:
datetime.datetime(2024, 4, 10, 15, 1, 0, 441078)
格式化成字符串
格式化符号如下:
%y:两位数的年份表示(00-99)%Y:四位数的年份表示(000-9999)%m:月份(01-12)%d:月内中的一天(0-31)%H:24小时制小时数(0-23)%I:12小时制小时数(01-12)%M:分钟数(00=59)%S:秒(00-59)%a:本地简化星期名称%A:本地完整星期名称%b:本地简化的月份名称%B:本地完整的月份名称%c:本地相应的日期表示和时间表示%j:年内的一天(001-366)%p:本地A.M.或P.M.的等价符%U:一年中的星期数(00-53)星期天为星期的开始%w:星期(0-6),星期天为星期的开始%W:一年中的星期数(00-53)星期一为星期的开始%x:本地相应的日期表示%X:本地相应的时间表示%Z:当前时区的名称%%:%号本身
strftime()
将datetime对象格式化(format)成字符串
>import datetime
>datetime.datetime.today().strftime('%Y-%m-%d %H:%M:%S')
解析成对象
strptime()
将字符串型的日期时间解析(parse)为datetime类对象
>import datetime
#将年月日格式化成datetime对象
>datetime.datetime.strptime('2018-01-03','%Y-%m-%d')
#将年月日时分秒格式化成datetime对象
> datetime.datetime.strptime('2018-01-03 11:23:38','%Y-%m-%d %H:%M:%S')
获取日期是 第几周、星期几
import datetime
#str 转datetime
s = '2021-1-5'
date_time = datetime.datetime.strptime(s,'%Y-%m-%d')
print (date_time)
#获取当前时间
# t_date=datetime.date.today()
# print (t_date)
#获取第几周
week = date_time.strftime("%W")
print("获取第几周:",week)
#获取星期几
week_day = date_time.strftime("%w")
print ("获取星期几:",week_day)
将一种格式的字符串格式化成另一种格式
将 Wed Mar 30 23:40:06 +0800 2022 格式化成 2022-03-30 23:40:06
解决思路:
将
Wed Mar 30 23:40:06 +0800 2022解析成datetime对象,解析格式:'%a %b %d %H:%M:%S %z %Y'将 步骤1 中的
datetime对象,格式化成'%Y-%m-%d %H:%M:%S'格式
代码
import datetime
s='Wed Mar 30 23:40:06 +0800 2022'
datetimeObj=datetime.datetime.strptime(s,'%a %b %d %H:%M:%S %z %Y')
res=datetimeObj.strftime('%Y-%m-%d %H:%M:%S')
print(res)
timedelta
datetime.timedelta对象代表两个时间之间的 时间差,用于日期计算
初始化
datetime.timedelta(days=0, seconds=0, microseconds=0, milliseconds=0, minutes=0, hours=0, weeks=0)
参数说明:
仅支持天,秒和微秒(1毫秒=1000微秒)
参数可以是整数或浮点数,并且可以是正数或负数
total_seconds()
时间间隔的总秒数,浮点型
可能为负数,过去时间减去现在(未来)时间
.total_seconds()
返回值
间隔时长,单位:秒
10小时之后的时间:
t=datetime.datetime.today()+datetime.timedelta(hours=10)
print(t)
2018-07-10 23:14:00与现在时间的间隔是多少小时
oldtime=datetime.datetime.strptime("2018-07-10 23:14:00","%Y-%m-%d %H:%M:%S")
now=datetime.datetime.today()
d=now-oldtime
snd=d.total_seconds()
snd=math.ceil(snd)
hour=snd//60//60
print("间隔%d小时"%hour)