datetime模块
datetime有datetime.datetime和datetime.date两个功能模块
import datetime print(datetime.datetime) # <class 'datetime.datetime'> now_time = datetime.datetime.now() # 现在的时间 print(now_time) # 2018-11-27 23:06:37.154336 strf = now_time.strftime('%d-%m-%Y %H:%M:%S') #自定义时间格式 print(strf) #27-11-2018 23:06:37 #datetime.date print(datetime.date.today()) 2021-07-14
只能调整的字段:weeks days hours minutes seconds
print(datetime.datetime.now() + datetime.timedelta(weeks=3)) # 三周后 print(datetime.datetime.now() + datetime.timedelta(weeks=-3)) # 三周前 print(datetime.datetime.now() + datetime.timedelta(days=3)) # 三天后 print(datetime.datetime.now() + datetime.timedelta(days=-3)) # 三天前 print(datetime.datetime.now() + datetime.timedelta(hours=5)) # 5小时后 print(datetime.datetime.now() + datetime.timedelta(hours=-5)) # 5小时前 print(datetime.datetime.now() + datetime.timedelta(minutes=15)) # 15分钟后 print(datetime.datetime.now() + datetime.timedelta(minutes=-15)) # 15分钟前 print(datetime.datetime.now() + datetime.timedelta(seconds=70)) # 70秒后 print(datetime.datetime.now() + datetime.timedelta(seconds=-70)) # 70秒前
可直接调整到指定的 年 月 日 时 分 秒 等
current_time = datetime.datetime.now() print(current_time.replace(year=1977)) # 直接调整到1977年 print(current_time.replace(month=1)) # 直接调整到1月份 print(current_time.replace(year=1989,month=4,day=25)) # 1989-04-25 18:49:05.898601 print(datetime.datetime.now().replace(year=2010)) #将年份设置为2010年 # 2010-11-27 23:16:19.293633 print(datetime.datetime.now().replace(month=1)) #将月份设置为1月 # 2018-01-27 23:16:19.293633 print(datetime.datetime.now().replace(day=1)) #将日期调整为1号 # 2018-11-01 23:16:19.293633 print(datetime.datetime.now().replace(year=2010, month=10, day=10, hour=10, minute=10, second=10)) #自定义年月日时分秒 # 2010-10-10 10:10:10.293633
将时间转换成时间戳
print(datetime.datetime.now().timestamp()) 1628072595.420438
将时间戳转化成时间,使用date可以精确到日期,使用datetime可以精确到秒
print(datetime.date.fromtimestamp(1628072595.420438)) 2021-08-04 print(datetime.datetime.fromtimestamp(1628072595.420438)) 2021-08-04 18:23:15.420438
例子:两个datetime.datetime格式的时间相减,可以先转换成时间戳,可得到相差的秒数。
(expire_datetime.timestamp()-today.timestamp())/3600/24 6.9609116317359385
也可以直接相减
>>> t1 = datetime.datetime.now() >>> t2 = datetime.datetime.now() >>> t1 datetime.datetime(2021, 8, 4, 18, 48, 19, 409559) >>> t2 datetime.datetime(2021, 8, 4, 18, 48, 24, 423099) >>> t2-t1 datetime.timedelta(0, 5, 13540) >>> (t2-t1).days 0 >>> (t2-t1).seconds 5
将结构化时间转换成格式化时间 strptime
import datetime strp = datetime.datetime.strptime('Aug-23-18 19:51', '%b-%d-%y %H:%M') print(strp) 2018-08-23 19:51:00
将格式化时间转换成结构化时间 strftime
now = datetime.datetime.now() strf = now.strftime('%Y-%m-%d %H:%M:%S') print(strf) 2019-12-23 17:40:25 yestarday = (datetime.datetime.now() + datetime.timedelta(days=-1)).strftime('%Y%m%d') print(yestarday) 20191222 print(type(yestarday)) <class 'str'>
UTC格式转换
import datetime utc = "2017-07-28T08:28:47.776Z" UTC_FORMAT = "%Y-%m-%dT%H:%M:%S.%fZ" utcTime = datetime.datetime.strptime(utc, UTC_FORMAT) print(utcTime) 2017-07-28 08:28:47.776000 注意是strptime,不是strftime
Python datetime模块中strptime和strftime的区别和使用方法
strptime和strftime是两个比较容易搞混的函数
strptime:
p表示parse,表示分析的意思,所以strptime是给定一个时间字符串和分析模式,返回一个时间对象。
strftime:
f表示format,表示格式化,和strptime正好相反,要求给一个时间对象和输出格式,返回一个时间字符串
import datetime time1 = datetime.datetime.strptime('2019/07/04 14:47', '%Y/%m/%d %H:%M') print(type(time1), time1)
返回结果为<class 'datetime.datetime'> 2019-07-04 14:47:00
可以看到strptime函数返回结果类型为datetime类的时间对象,将字符串按照给定的模式分析成了一个时间对象。
time2 = datetime.datetime.strftime(time1, '%Y@%m@%d %H:%M') time2 = time1.strftime('%Y@%m@%d %H:%M')
#两种写法都是一样的,这里time1即上面代码返回的时间对象
print(type(time2), time2)
返回结果为<class 'str'> 2019@07@04 14:47
可以看到strftime返回类型为字符串,并按照给定的格式打印。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
2019-11-25 创建型模式(二) 建造者模式