0

我不知何故陷入了逻辑思维。

我将比较这两个州的日期:

  1. 夏季学期(16.04 开始 - 14.10 结束)
  2. 冬季学期(15.10 开始 - 15.04 结束)

包括假期

我如何查看本月/日的哪个学期?

current_month = datetime.datetime.now().month
current_year = datetime.datetime.now().year
current_day = datetime.datetime.now().day

if current_month>=10 and current_day>=15:
   #winter semester

但我不知何故这样做太混乱了。是否有任何 python lib 用于我的问题的日期比较?

4

2 回答 2

9

您可以生成夏季日期:

current = datetime.date.today()
summer = current.replace(month=4, day=16), current.replace(month=10, day=14)

if summer[0] <= current <= summer[1]:
    # summer semester
else:
    # winter semester

这使用 a datetime.date()object 而不是 a datetime.datetime(),因为时间部分在这里无关紧要。这些date.replace()调用确保我们重用当前年份。

当然,这一切都假设夏季学期每年的开始和结束日期相同。

演示:

>>> import datetime
>>> current = datetime.date.today()
>>> current
datetime.date(2013, 9, 3)
>>> summer = current.replace(month=4, day=16), current.replace(month=10, day=14)
>>> summer[0] <= current <= summer[1]:
True
于 2013-09-03T18:06:16.350 回答
3

一种方法是创建一个查找表(当您有许多不相交的时间间隔时,这通常是一个好主意,但每个时间间隔都是离散的大小,比如一天)。

另一个是测试是否是夏天——4 月 16 日之后和 10 月 15 日之前。如果不是夏天,那就是冬天。当你只有两个间隔时效果很好 - 如果你有更多,就会分解(混乱的代码)。

于 2013-09-03T18:08:39.520 回答