如何在Python中创建自定义日历并通过它进行索引?

问题描述 投票:0回答:2

我想在python中创建自定义日历,仍然保留365天,但有六个月。我想要实现一个程序,其中用户输入日期,例如01/15/2020,该程序将从创建的自定义日历中输出日期。到目前为止,我已将自定义日历创建为元组列表,如下所示:

Calendar = [("Leo", range(1, 61)), 
                ("Gemini", range(1, 62)), 
                ("Pegasus", range(1, 62)),
                ("Orion", range(1, 62)),
                ("Scorpius", range(1, 62)),
                ("Taurus", range(1, 62))]

在此示例之后,第一个自定义月份为“狮子座”,它将有60天。但是我在每个月的每一天中都遇到了迭代问题。如何从该元组列表中获得特定月份中的特定日期?然后如何将其与公历格式(例如:1月15日)联系起来。

我对编程非常陌生,因此不胜感激!在此先感谢

python list datetime calendar
2个回答
0
投票

从日期开始算起从一年开始的过去的日子

from datetime import datetime
day_of_year = datetime.now().timetuple().tm_yday

然后使用简单的if检查日期在365范围内的位置。


0
投票

您目前可以像这样访问特定月份的特定日期

wanted_month = 'Orion'
wanted_day = 6

for month, days in calendar:           # python allows you to unpack tuples using commas
    if month == wanted_month:
        return month[wanted_day + 1]   # indexes are zero based and your ranges start at 1 so we have to add

如果将元组转换为字典,这可能会更高效,更简单

calendar = {'leo': range(1,61), 'orion': range(61,122)}

calendar[wanted_month][wanted_day + 1]

如果您知道一年中的哪一天,可以轻松将其转换为常规日历日。因此,如果您想要一年的第300天,可以这样做。

import datetime
datetime.datetime(datetime.datetime.now().year, 1, 1) + datetime.timedelta(300 - 1)
© www.soinside.com 2019 - 2024. All rights reserved.