3.15字符串转换为日期

问题:

​ 你的应用程序接受字符串格式的输入,但是你想将它们转换为datetime对象以便在上面执行非字符串操作。

解决方案:

​ 使用python的标准模块datetime可以很容易解决这个问题,比如:

from datetime import datetime
text='2022-03-15'
y=datetime.strptime(text,'%Y-%m-%d')
z=datetime.now()
diff=z-y

print(diff)# ->15:38:26.477008

讨论:

​ datatime.striptime()方法支持很多的格式化代码,比如%Y代表4位数年份,%m代表两位数月份。还有一点值得注意的是这些格式化占位符也可以反过来使用,将日期输出为指定的格式字符串形式。

​ 比如,假设你的代码中生成了一个datetime对象,你想将它格式化为漂亮易读形式后放在自动生成的信件或者报告的顶部:

print(z)# ->2022-03-15 16:03:35.355668
print(z.strftime('%A %B %d,%Y'))# ->Tuesday March 15,2022

​ 还有一点需要注意的是,striptime()的性能要比较你想象中的差很多,因为它是使用纯python实现的,并且必须处理所有的系统本地设置。如果你要在代码中需要解析大量的日期并且已经知道了日期字符串的确切格式,可以自己实现一套解析方案来获取更好的性能。比如,如果你已经知道所有日期格式是YYYY-MM-DD,你可以像以下这样实现又给解析函数:

def parse_ymd(s):
    year_s, mon_s, day_s = s.split('-')
    return datetime(int(year_s), int(mon_s), int(day_s))
print(parse_ymd('2022-3-15'))  # ->2022-03-15 00:00:00
posted @   qiupeng  阅读(350)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
点击右上角即可分享
微信分享提示