Gregorian Date-numDays函数

时间:2012-11-23 18:22:00

标签: python algorithm data-structures

我必须编写numDays(otherdate)函数,该函数返回此日期与OtherDate之间的正整数天数。

此函数属于Date ADT,它初始化为给定的格里高利日期。我们有self._date(month,day,year)格式的格里高利日期。它必须返回两个日期之间的差异。如9月25日和10月6日=它有12天的差异

 def numDays(self,otherDate):
        print("Enter a date:")
        y=int(input("Year:"))
        m=int(input("Month:"))
        d=int(input("Day:"))
        today=self._date(y,m,d)
        diff=today-otherDate
        NoOfDays=diff.days
        print("The Number of day between today and Julian date is %s"%NoOfDays)

写得那样,但我知道有一些错误。

2 个答案:

答案 0 :(得分:0)

问题是,您还必须为该国家和欧洲部分地区提供您计算差额的州。有关详细信息,请参阅http://en.wikipedia.org/wiki/Gregorian_calendar的wiki。

虽然有一个通用公式(应该很容易找到),但我认为这不准确。

另一方面:谁在乎。可能已经很久以前去世的人; - )

答案 1 :(得分:0)

如果两个日期都是datetime.date个对象,那么要计算今天和另一个日期之间的天数:

from datetime import date

number_of_days = date.today().toordinal() - other_date.toordinal()

它没有考虑与时区相关的问题,并且假设您错误地写了“Julian date”。

顺便说一下,9月25日到10月6日之间有11天:

>>> date(2012, 10, 6).toordinal() - date(2012, 9, 25).toordinal()
11
>>> date(2012, 9, 26).toordinal() - date(2012, 9, 25).toordinal()
1
>>> date(2012, 9, 25).toordinal() - date(2012, 9, 25).toordinal()
0

要在没有日期时间模块的情况下执行此操作,您需要执行一些简单的算法。日历每400年重复一次,见the algorithm