Skip to main content
 首页 » 编程设计

python之如何使用自定义日历进行 timedelta 计算

2025年05月04日13softidea

我正在编写一个需要能够处理多个日历(主要是标准的“proleptic Gregorian”和“365 天”(无闰年)日历)的程序。 python datetime模块开箱即用地处理公历,但我也想让它处理其他日历。

一个简短的例子:

from datetime import datetime 
import calendar 
 
def example(year): 
    delta = datetime(year, 3, 1) - datetime(year, 2, 28) 
    print '%i is a leap year: %s' % (year, calendar.isleap(year)) 
    print 'Days between 2-28 and 3-1: %s' % delta.days 
 
example(2012) 
2012 is a leap year: True 
Days between 2-28 and 3-1: 2 
example(2013) 
2013 is a leap year: False 
Days between 2-28 and 3-1: 1 

这当然是该模块的预期操作,但它不能满足我的特殊需求。我希望能够将日历设置为“noleap”并保留 datetime 和 timedelta 的功能。

我想知道是否有人有定义/使用带日期时间的自定义日历的经验?

请您参考如下方法:

如果您编写了可以将日期时间从一种日历系统转换为另一种日历系统的函数,那么您可以先将所有输入转换为标准公历,进行所需的数学运算或运算,然后将结果转换回另一个系统。这可能是工作量最少且最不容易出错的 -- 假设您的转换函数正常工作。

更新:刚刚在 pypi 上发现了一个模块命名为julian看起来它可以用来做这件事。