在不使用标准库的情况下加减日期

0 投票
4 回答
725 浏览
提问于 2025-04-15 15:13

我正在一个有限的环境中开发一个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日这个时间点就很合适。知道了这个时间点,以及每个月有多少天,哪些年份是闰年,你就可以很容易地把这个“秒数”转换成日期字符串(虽然用简单的方法转换可能会慢一些)。

你还需要把日期字符串转换回这个简单的表示方式。这同样也不难。

一旦你有了这两个功能,进行计算就简单了。只需要在你的“秒数”表示上加上或减去时间,然后再转换回日期字符串。

说到这里,我希望这只是一个作业,因为你绝对不应该在实际的生产代码中自己写日期处理的功能。

撰写回答