java实现输入年月日,输出距今天还有多少天,星期几,是否为公历节日。
时间: 2023-09-13 10:04:44 浏览: 177
### 回答1:
以下是Java代码实现,使用了Java 8的时间API和中国节假日API。
```java
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.time.temporal.ChronoUnit;
import java.util.ArrayList;
import java.util.List;
public class Main {
public static void main(String[] args) {
// 读取输入的年月日
int year = 2022;
int month = 1;
int day = 1;
// 获取当前日期
LocalDate today = LocalDate.now();
// 构造指定日期
LocalDate date = LocalDate.of(year, month, day);
// 计算距离今天的天数
long daysUntil = ChronoUnit.DAYS.between(today, date);
// 计算星期几
String dayOfWeek = date.getDayOfWeek().toString();
// 判断是否为公历节日
List<String> holidays = getHolidays(year);
boolean isHoliday = holidays.contains(date.format(DateTimeFormatter.ofPattern("MMdd")));
// 输出结果
System.out.println("距离今天还有 " + daysUntil + " 天");
System.out.println("星期" + dayOfWeek.substring(0, 1) + dayOfWeek.substring(1).toLowerCase());
System.out.println(isHoliday ? "是公历节日" : "不是公历节日");
}
/**
* 获取指定年份的所有公历节日
*
* @param year 年份
* @return 公历节日列表,格式为MMdd
*/
private static List<String> getHolidays(int year) {
List<String> holidays = new ArrayList<>();
holidays.add("0101"); // 元旦
holidays.add("0501"); // 劳动节
holidays.add("1001"); // 国庆节
// 计算复活节的日期
int a = year % 19;
int b = year % 4;
int c = year % 7;
int d = (a * 19 + 24) % 30;
int e = (2 * b + 4 * c + 6 * d + 5) % 7;
int dateOfEaster = 22 + d + e;
if (dateOfEaster > 31) {
dateOfEaster -= 31;
holidays.add("04" + (dateOfEaster < 10 ? "0" + dateOfEaster : dateOfEaster));
} else {
holidays.add("03" + (dateOfEaster < 10 ? "0" + dateOfEaster : dateOfEaster));
}
return holidays;
}
}
```
请根据实际需要修改输入的年月日。
### 回答2:
首先,我们需要利用Java中的日期相关类来处理日期和时间。我们可以使用`java.util.Calendar`类来计算日期和星期几,使用`java.time.LocalDate`类来表示日期,以及使用`java.time.format.DateTimeFormatter`类来解析和格式化日期。
首先,我们可以使用`java.time.LocalDate.now()`方法获取当前日期。然后,我们可以使用`java.time.LocalDate.parse(String, DateTimeFormatter)`方法将输入的年月日字符串解析为`LocalDate`对象。接下来,我们可以使用`java.time.temporal.ChronoUnit`枚举类的静态`between`方法来计算距离当前日期还有多少天。
接下来,我们可以使用`java.util.Calendar`类来获取给定日期是星期几。首先,我们需要创建一个`Calendar`实例,并使用`Calendar.setTime(Date)`方法将其设置为给定日期。然后,我们可以使用`Calendar.get(int)`方法来获取给定日期的星期几。
最后,我们可以使用条件语句来判断输入的日期是否为公历节日。根据公历节日的规律,我们可以列出一系列节日的日期(如元旦、劳动节、国庆节等),并将输入日期与这些日期进行比较。如果日期匹配,则输出相应的公历节日。
以下是一个示例的Java代码,实现了上述功能:
```java
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.Calendar;
public class CalendarExample {
public static void main(String[] args) {
// 获取当前日期
LocalDate currentDate = LocalDate.now();
// 输入的年月日(示例:2022-01-01)
String inputDateStr = "2022-01-01";
LocalDate inputDate = LocalDate.parse(inputDateStr, DateTimeFormatter.ISO_DATE);
// 计算距离当前日期还有多少天
long daysUntil = ChronoUnit.DAYS.between(currentDate, inputDate);
// 获取输入日期是星期几
Calendar calendar = Calendar.getInstance();
calendar.setTime(java.sql.Date.valueOf(inputDate));
int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK);
// 判断是否为公历节日
boolean isHoliday = false;
if (inputDate.getMonthValue() == 1 && inputDate.getDayOfMonth() == 1) {
// 元旦节
isHoliday = true;
} else if (inputDate.getMonthValue() == 5 && inputDate.getDayOfMonth() == 1) {
// 劳动节
isHoliday = true;
} else if (inputDate.getMonthValue() == 10 && inputDate.getDayOfMonth() == 1) {
// 国庆节
isHoliday = true;
} // 添加其他公历节日的判断条件
// 输出结果
System.out.println("距离今天还有 " + daysUntil + " 天");
System.out.println("星期" + dayOfWeek);
if (isHoliday) {
System.out.println("是公历节日");
} else {
System.out.println("不是公历节日");
}
}
}
```
请注意,以上示例代码仅实现了部分公历节日的判断,您可以根据需要添加其他公历节日的判断条件。另外,为了简化示例,未进行日期格式的验证和异常处理,实际应用中可能需要进行相关处理。
### 回答3:
要实现输入年月日,输出距今天还有多少天,星期几以及是否为公历节日,可以按照以下步骤实现:
1. 首先,获取用户输入的年月日信息。
2. 使用Java的日期时间库(如java.util.Calendar)将用户输入的年月日转换为日期对象。
3. 使用当前系统日期创建一个新的日期对象,表示今天的日期。
4. 计算距离今天还有多少天:通过将今天的日期对象与用户输入的日期对象进行比较,可以得到时间差的毫秒数,再将其转换为天数。
5. 获取今天是星期几:使用日期对象的get方法获取日期对象的星期字段值,即可得到星期几的数字表示。注意,星期的表示范围为1到7,其中1表示星期日,2表示星期一,以此类推。
6. 判断是否为公历节日:根据国家的公历节日规定,使用获取到的日期对象的年、月、日信息判断是否为公历节日。例如,判断是否为元旦节可以通过判断月份是否为1月1日来实现。
最后,将距离今天还有多少天、星期几和是否为公历节日的结果以格式化的方式输出给用户。
阅读全文