美文网首页
每天一个Python小技巧(4)

每天一个Python小技巧(4)

作者: 米洛丶 | 来源:发表于2021-08-16 19:58 被阅读0次

大家好,我是米洛,一个想和大家一起分享测试开发相关的技术,面试经验和成长经历的博主!

欢迎大家关注我的龚仲耗: 测试开发坑货


很多人都用过datetime库,也能很顺利地写出datetime.now()和对应的格式化代码:

from datetime import datetime
print(datetime.now())
print(datetime.strftime("%Y-%m-%d %H:%M:%S"))

但其实datetime还有一些你可能不知道的用法。

故事

在我们做数据统计的时候,会遇到这样的场景。比如获取本月至今的测试用例执行次数,我们需要获取到类似2021-07-01 00:00:00的字符串。

或者这么说,我曾经出过这样一道笔试题:

获取当月的第一天的日期字符串,如果今天是2021年4月10日,那么输出"2021-04-01 00:00:00"。

先想一下,如果是你,你会怎么做?虽然我不知道大家是否都能掌握对应的技巧,我还是尽自己的力量写出最可能的解法。

  • 解法一(尴尬型)
from datetime import datetime
result = datetime.now().strftime("%Y-%m-%d")
day = result.split(" ")[0].split("-")[2]
result = result.replace(day, "01") + " 00:00:00"
print(result)

这种解法是从字符串的角度出发,去解决问题,比较憨厚,是我最初的模样

  • 解法二
from datetime import datetime
now = datetime.now()
now = now.replace(now.year, now.month, 1, 0, 0, 0)
result = now.strftime("%Y-%m-%d %H:%M:%S")
print(result)

时间是可以设置的,我这里把day设置为1,时分秒设置为0,再格式化就成功了。

  • 解法三

    但其实,因为不确定大家知不道,所以压轴出场了,日期格式化的时候是可以指定的。

from datetime import datetime
print(datetime.now().strftime("%Y-%m-01 00:00:00"))
image

其实datetime还有很多玩法,我们如果操作日期的话尽量不要使用字符串,我们要用datetime类的相关方法,简单方便快捷。

进阶

如果要操作时间加减,比如我要获取30天后的今天,或者算出距离高考已经过去多久了,都可以用datetime来解决。

假如我是6.1入职的公司,我想看看我来了多久了,我可以这么写:

from datetime import timedelta, datetime
come = datetime.strptime("2021-06-01", "%Y-%m-%d")
# 计算日期差, 获取入职后的天数
days = (datetime.now() - come).days
print(days)
# 计算3个月后的时间,算出转正日期
engineer = come + timedelta(days=90)
print(engineer.strftime("%Y-%m-%d")) 

可以看到datetime是可以做加减法的,加减后的对象是timedelta对象,这也是我之前强调不要用字符串操作的原因。

小调查

如果觉得技巧有用,学到了的话,请麻烦点个赞吧,赞多我就继续更新,赞少我就不更新类似的

相关文章

  • 每天一个Python小技巧(4)

    大家好,我是米洛,一个想和大家一起分享测试开发相关的技术,面试经验和成长经历的博主! 欢迎大家关注我的龚仲耗: 测...

  • Python小技巧和有趣的内置函数

    Python小技巧和有趣的内置函数 一个python小技巧的集合和一些很有用的Python内置函数,这些函数简直是...

  • Python基本数据类型

    Python补充02 Python小技巧 在这里列举一些我使用Python时积累的小技巧。这些技巧是我在使用Pyt...

  • Python中实用却不常见的小技巧

    这是一个老外总结的Python的小技巧: https://hackernoon.com/python-tricks...

  • 每天一个Python小技巧(1)

    每天一个Python小技巧(1) 大家好,这里是米洛,一个想和大家一起分享测试开发相关的技术,面试经验和成长经历的...

  • 每天一个Python小技巧(2)

    每天一个Python小技巧(2) if else 很多人都用过if/else,但却不知道while和for后面也可...

  • 每天一个Python小技巧(5)

    大家好,我是米洛,一个想和大家一起分享测试开发相关的技术,面试经验和成长经历的博主! 欢迎大家关注我的龚仲耗: 测...

  • 每天一个Python小技巧(3)

    大家好,这里是米洛,一个想和大家一起分享测试开发相关的技术,面试经验和成长经历的博主! 欢迎大家关注我的攻仲耗: ...

  • 干货的正确打开方式,python小技巧,不要客气拿走!

    干货的正确打开方式,python小技巧,不要客气拿走! 干货第三篇,python小技巧。 1 正确的函数返回 推荐...

  • 每天一个说话小技巧4

    昨天的小技巧是说话要“换位思考,投其所好” 今天的是“儆其所恶”。 就像你在院门口种了果树,在没有成熟的时候,就被...

网友评论

      本文标题:每天一个Python小技巧(4)

      本文链接:https://www.haomeiwen.com/subject/synxbltx.html