编写一个程序,只要输入年月日,就能回答那天是星期几。
时间: 2023-04-24 17:02:58 浏览: 207
可以使用Python编写一个程序来实现这个功能。具体步骤如下:
1. 导入datetime模块,该模块提供了处理日期和时间的函数和类。
2. 获取用户输入的年月日,可以使用input函数。
3. 将用户输入的年月日转换为datetime对象,可以使用datetime.strptime函数。
4. 使用datetime对象的weekday方法获取星期几,0表示星期一,1表示星期二,以此类推。
5. 将星期几转换为中文,可以使用一个列表来存储星期几的中文名称,然后根据weekday方法返回的值来获取对应的中文名称。
下面是完整的Python代码:
```python
import datetime
# 中文星期几名称
WEEKDAYS = ['星期一', '星期二', '星期三', '星期四', '星期五', '星期六', '星期日']
# 获取用户输入的年月日
date_str = input('请输入日期(格式为YYYY-MM-DD):')
# 将字符串转换为datetime对象
date = datetime.datetime.strptime(date_str, '%Y-%m-%d')
# 获取星期几
weekday = date.weekday()
# 输出结果
print('{}是{}'.format(date_str, WEEKDAYS[weekday]))
```
使用该程序,只需要输入日期,就可以输出对应的星期几。例如,输入2022-01-01,输出结果为“2022-01-01是星期六”。
相关问题
已知公元 1 年 1 月 1 日是星期一。编写一个程序,只要输入年月日,就能回答那天是星期几。
可以使用公式来计算某一天是星期几,具体步骤如下:
1. 计算该年到公元 1 年的天数,记为 yearDays。
2. 计算该月到 1 月的天数,记为 monthDays。
3. 计算该日是该年的第几天,记为 dayOfYear。
4. 计算星期几,公式为:(yearDays + monthDays + dayOfYear) % 7。
以下是一个 Python 的实现:
```python
def is_leap_year(year):
# 判断是否为闰年
return year % 4 == 0 and (year % 100 != 0 or year % 400 == 0)
def get_weekday(year, month, day):
# 计算该年到公元 1 年的天数
yearDays = (year - 1) * 365 + sum(is_leap_year(y) for y in range(1, year))
# 计算该月到 1 月的天数
monthDays = sum([31, 29 if is_leap_year(year) else 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31][:month - 1])
# 计算该日是该年的第几天
dayOfYear = day
if month > 2 and is_leap_year(year):
dayOfYear += 1
# 计算星期几
weekday = (yearDays + monthDays + dayOfYear - 1) % 7 + 1
return weekday
# 测试
print(get_weekday(2021, 8, 12)) # 输出 4,即星期四
```
这个程序中,is_leap_year 函数用来判断是否为闰年,get_weekday 函数接受三个参数 year、month 和 day,返回对应的星期几。我们可以将输入的年月日作为参数传入 get_weekday 函数,得到对应的星期几。
已知公元 1 年 1 月 1 日是星期一。编写一个程序,只要输入年月日,就能回答那天是星期几。java实现
可以使用类似的公式来计算某一天是星期几,具体步骤如下:
1. 计算该年到公元 1 年的天数,记为 yearDays。
2. 计算该月到 1 月的天数,记为 monthDays。
3. 计算该日是该年的第几天,记为 dayOfYear。
4. 计算星期几,公式为:(yearDays + monthDays + dayOfYear) % 7。
以下是一个 Java 的实现:
```java
public class WeekdayCalculator {
public static boolean isLeapYear(int year) {
// 判断是否为闰年
return year % 4 == 0 && (year % 100 != 0 || year % 400 == 0);
}
public static int getWeekday(int year, int month, int day) {
// 计算该年到公元 1 年的天数
int yearDays = (year - 1) * 365 + IntStream.range(1, year).map(y -> isLeapYear(y) ? 1 : 0).sum();
// 计算该月到 1 月的天数
int[] monthDays = new int[] {31, isLeapYear(year) ? 29 : 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
int monthDaysSum = Arrays.stream(monthDays, 0, month - 1).sum();
// 计算该日是该年的第几天
int dayOfYear = day;
if (month > 2 && isLeapYear(year)) {
dayOfYear += 1;
}
// 计算星期几
int weekday = (yearDays + monthDaysSum + dayOfYear - 1) % 7 + 1;
return weekday;
}
public static void main(String[] args) {
int year = 2021, month = 8, day = 12;
int weekday = getWeekday(year, month, day);
System.out.println(weekday); // 输出 4,即星期四
}
}
```
这个程序中,isLeapYear 函数用来判断是否为闰年,getWeekday 函数接受三个参数 year、month 和 day,返回对应的星期几。我们可以将输入的年月日作为参数传入 getWeekday 函数,得到对应的星期几。
阅读全文