用面向对象的方法编写一个日期计算程序,完成以下功能: (1)从键盘输人一个月份,屏幕上输出本年这个月份的月历,每星期一行,从星期日开始 到星期六結束。心 (2)从键盘输入一个日期,屏幕上回答是星期几,也以当年为例 (3)从維盘输入两个日期,计算这两个日期之间含有多少天
时间: 2024-10-08 10:03:46 浏览: 51
为了编写一个日期计算程序,我们可以创建一个简单的类`DateCalculator`,包含以下几个成员变量:年份、月份和日期。然后利用面向对象的方法实现所需的三个功能:
1. **生成月历**:
可以通过一个内部函数`generateCalendar()`来实现,接受月份作为参数。首先确定当前年份,然后使用`calendar`库来获取指定月份的日历。遍历每一天,打印出每周的天数,注意从周日开始。
```python
import calendar
class DateCalculator:
def __init__(self, year=None):
self.year = year if year else datetime.datetime.now().year
def generate_calendar(self, month):
cal = calendar.monthcalendar(self.year, month)
for week in cal:
print(" ".join(str(day) for day in week))
# 示例用法
calculator = DateCalculator()
month = int(input("请输入月份:"))
calculator.generate_calendar(month)
```
2. **查询给定日期是星期几**:
使用`datetime`库的`weekday()`方法来计算输入日期是星期几,并返回相应的字符串。
```python
def get_weekday(date_string):
date_format = "%Y-%m-%d"
parsed_date = datetime.datetime.strptime(date_string, date_format)
return calendar.day_name[parsed_date.weekday()]
date_input = input("请输入日期(格式如:YYYY-MM-DD):")
print(f"该日期是{get_weekday(date_input)}")
```
3. **计算两个日期之间的天数差**:
完成这一步需要先将用户输入转换为`datetime`对象,然后直接相减得到`timedelta`,再取其总秒数除以一天的秒数。
```python
def days_between_dates(date1, date2):
format_str = "%Y-%m-%d"
parsed_date1 = datetime.datetime.strptime(date1, format_str)
parsed_date2 = datetime.datetime.strptime(date2, format_str)
delta = parsed_date2 - parsed_date1
return delta.days
date1_input = input("请输入第一个日期(格式如:YYYY-MM-DD):")
date2_input = input("请输入第二个日期:")
days_diff = days_between_dates(date1_input, date2_input)
print(f"两个日期之间有{days_diff}天")
```
你可以根据需求组合这三个方法来构建完整的程序。在实际应用中,还需要考虑异常处理,例如无效的日期输入等。
阅读全文