在不使用标准库的情况下加减日期
我正在一个有限的环境中开发一个Python脚本。
我遇到的问题是,我需要能够进行日期和时间的加减运算。
比如,我得到了以下这个字符串:
"09/10/20,09:59:47-16"
这个字符串的格式是:年/月/日,小时:分钟:秒-毫秒。
我该如何在Python中给这个时间加上30秒呢?我只能使用基本的加法、减法和字符串解析功能。
4 个回答
2
为了完整性,datetime.datetime.strptime 和 datetime.timedelta 是默认的 Python 安装包里自带的。
from datetime import datetime, timedelta
got = "09/10/20,09:59:47-16"
dt = datetime.strptime(got, '%y/%m/%d,%H:%M:%S-%f')
dt = dt + timedelta(seconds=30)
print dt.strftime('%y/%m/%d,%H:%M:%S-%f')
输出的结果正好是
09/10/20,10:00:17-160000
文档可以在 这里 找到。
2
你正在进行不同进制的数学运算。你需要把一个字符串解析成一系列的值,比如(年、月、日、小时、分钟、秒),然后再进行其他进制的加减运算。比如,小时是24进制的,所以你需要用取余运算来进行计算。这听起来有点像作业,所以我就不详细讲了 :)
2
进行日期计算最简单的方法其实不是直接对日期进行计算,而是对一个更简单的东西进行计算。
通常,这个简单的东西就是从某个特定时间点开始的秒数。比如,1970年1月1日这个时间点就很合适。知道了这个时间点,以及每个月有多少天,哪些年份是闰年,你就可以很容易地把这个“秒数”转换成日期字符串(虽然用简单的方法转换可能会慢一些)。
你还需要把日期字符串转换回这个简单的表示方式。这同样也不难。
一旦你有了这两个功能,进行计算就简单了。只需要在你的“秒数”表示上加上或减去时间,然后再转换回日期字符串。
说到这里,我希望这只是一个作业,因为你绝对不应该在实际的生产代码中自己写日期处理的功能。