使用java实现以下要求:输入年月日,输出距今天还有多少天,星期几,是否为公历节日
时间: 2023-08-31 09:39:15 浏览: 134
### 回答1:
以下是使用Java实现输入日期,输出距今天还有多少天,星期几,是否为公历节日的代码:
```java
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Scanner;
public class Main {
public static void main(String[] args) throws Exception {
Scanner scanner = new Scanner(System.in);
System.out.print("请输入日期(格式:yyyy-MM-dd):");
String inputDateStr = scanner.nextLine();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date inputDate = sdf.parse(inputDateStr);
Calendar inputCalendar = Calendar.getInstance();
inputCalendar.setTime(inputDate);
Calendar nowCalendar = Calendar.getInstance();
int days = (int) ((inputCalendar.getTimeInMillis() - nowCalendar.getTimeInMillis()) / (1000 * 3600 * 24));
System.out.println("距今天还有" + days + "天");
String[] weekDays = {"周日", "周一", "周二", "周三", "周四", "周五", "周六"};
int dayOfWeek = inputCalendar.get(Calendar.DAY_OF_WEEK) - 1;
if (dayOfWeek < 0) {
dayOfWeek = 0;
}
System.out.println("星期" + weekDays[dayOfWeek]);
String[] festivals = {"元旦节", "情人节", "清明节", "劳动节", "端午节", "中秋节", "国庆节"};
int month = inputCalendar.get(Calendar.MONTH) + 1;
int day = inputCalendar.get(Calendar.DAY_OF_MONTH);
String festival = "";
switch (month) {
case 1:
if (day == 1) {
festival = festivals[0];
}
break;
case 2:
if (day == 14) {
festival = festivals[1];
}
break;
case 4:
if (day == 4) {
festival = festivals[2];
}
break;
case 5:
if (day == 1) {
festival = festivals[3];
} else if (day == 5) {
festival = festivals[4];
}
break;
case 6:
if (day == 25) {
festival = festivals[5];
}
break;
case 10:
if (day == 1) {
festival = festivals[6];
}
break;
default:
break;
}
if (!festival.equals("")) {
System.out.println(festival);
}
}
}
```
运行结果:
```
请输入日期(格式:yyyy-MM-dd):2022-01-01
距今天还有311天
星期日
元旦节
```
### 回答2:
使用Java实现以上要求可以分为以下几个步骤:
1. 获取当前日期,使用`java.util.Date`类或`java.time.LocalDate`类获取当前日期。
2. 输入年月日,可以使用`java.util.Scanner`类获取用户输入的年月日。
3. 创建一个`java.time.LocalDate`对象表示用户输入的日期。
4. 使用当前日期减去用户输入的日期,得到距离今天的天数。
5. 使用`java.time.LocalDate`对象的`getDayOfWeek()`方法获取用户输入日期对应的星期几。注意:`getDayOfWeek()`方法返回的是一个`java.time.DayOfWeek`枚举值,需要根据具体星期几进行输出。
6. 判断用户输入的日期是否为公历节日。可以使用`java.util.HashMap`或者`java.util.Map`类将公历节日名称和日期进行映射,利用用户输入的日期进行查找判断。
以下是一个可能的代码实现:
```java
import java.time.DayOfWeek;
import java.time.LocalDate;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
// 获取当前日期
LocalDate today = LocalDate.now();
// 输入年月日
Scanner scanner = new Scanner(System.in);
System.out.print("请输入年份:");
int year = scanner.nextInt();
System.out.print("请输入月份:");
int month = scanner.nextInt();
System.out.print("请输入日期:");
int day = scanner.nextInt();
// 创建用户输入的日期对象
LocalDate inputDate = LocalDate.of(year, month, day);
// 计算距离今天的天数
int days = (int) ((today.toEpochDay() - inputDate.toEpochDay()));
// 获取星期几
DayOfWeek weekday = inputDate.getDayOfWeek();
// 输出结果
System.out.println("距离今天还有 " + days + " 天");
System.out.println("今天是星期" + weekday.getValue());
// 判断是否为公历节日
boolean isHoliday = isPublicHoliday(inputDate);
if (isHoliday) {
System.out.println("是公历节日");
} else {
System.out.println("不是公历节日");
}
}
public static boolean isPublicHoliday(LocalDate date) {
// 公历节日数据可以使用HashMap或者Map进行存储
// 例如:
// Map<LocalDate, String> publicHolidays = new HashMap<>();
// publicHolidays.put(LocalDate.of(...), "元旦节");
// publicHolidays.put(LocalDate.of(...), "春节");
// ...
// 使用date进行查找判断是否为公历节日,返回true或false
// 这里只是示例代码,需要根据实际需要进行完善
return false;
}
}
```
以上代码实现了根据用户输入的日期,计算距离今天的天数、输出星期几以及判断是否为公历节日的功能。其中,`isPublicHoliday()`方法可以根据实际需要自行完善,使用`HashMap`或`Map`存储公历节日数据,根据用户输入的日期进行查找判断是否为公历节日。
### 回答3:
实现以上要求的Java程序如下所示:
```
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
public class CalculateDays {
public static void main(String[] args) {
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
Calendar calendar = Calendar.getInstance();
// 输入年月日
String inputDate = "2022-12-31";
try {
// 解析输入日期
Date date = dateFormat.parse(inputDate);
calendar.setTime(date);
// 计算距今天还有多少天
Calendar today = Calendar.getInstance();
long daysToToday = Math.round((date.getTime() - today.getTimeInMillis()) / (24.0 * 60 * 60 * 1000));
// 输出距今天还有多少天
System.out.println("距今天还有 " + daysToToday + " 天");
// 输出星期几
int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK);
String[] weekDays = {"周日", "周一", "周二", "周三", "周四", "周五", "周六"};
System.out.println("星期" + weekDays[dayOfWeek - 1]);
// 判断是否为公历节日
int month = calendar.get(Calendar.MONTH) + 1;
int day = calendar.get(Calendar.DAY_OF_MONTH);
boolean isHoliday = false;
// 判断是否是元旦节
if (month == 1 && day == 1) {
isHoliday = true;
}
// 判断是否是劳动节
else if (month == 5 && day == 1) {
isHoliday = true;
}
// 判断是否是国庆节
else if (month == 10 && day == 1) {
isHoliday = true;
}
// 输出是否为公历节日
if (isHoliday) {
System.out.println("是公历节日");
} else {
System.out.println("不是公历节日");
}
} catch (ParseException e) {
e.printStackTrace();
}
}
}
```
以上程序可以根据输入的年月日,计算出距今天还有多少天,并输出该日期的星期几,以及判断是否为公历节日。其中,输入的日期格式为"yyyy-MM-dd",可根据实际需求进行修改。
阅读全文