用Java来写:输入一个日期(yyyy-MM-dd)的格式,然后输出 1.上一天是星期几 2.上个月的 dd 号的前一天是星期几 3.上一天是今年的第几天 4.去年的 MM-dd 号是去年的第几天 5.再次输入你的生日,判断该日期和你的生日之间差多少天
时间: 2024-09-12 18:11:46 浏览: 84
在Java中,我们可以使用`java.time`包提供的类来处理日期相关的计算。下面是一个示例程序,它实现了上述功能:
```java
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.Scanner;
public class DateOperations {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
// 输入日期
System.out.println("请输入日期(yyyy-MM-dd):");
String inputDate = scanner.nextLine();
LocalDate date = LocalDate.parse(inputDate, formatter);
// 1. 上一天是星期几
LocalDate yesterday = date.minusDays(1);
System.out.printf("昨天是 %s, 星期%O%n", yesterday, yesterday.getDayOfWeek());
// 2. 上个月的dd号的前一天是星期几
int monthDay = date.getDayOfMonth();
LocalDate lastMonthDay = date.minusMonths(1).withDayOfMonth(monthDay - 1); // 如果是当月第一天,则减去一天避免越界
System.out.printf("%s日的前一天是 %s, 星期%O%n", monthDay, lastMonthDay, lastMonthDay.getDayOfWeek());
// 3. 上一天是今年的第几天
int dayOfYear = yesterday.getDayOfYear();
System.out.printf("上一天是今年的第%d天%n", dayOfYear);
// 4. 去年的MM-dd号是去年的第几天
LocalDate lastYear = date.minusYears(1);
LocalDate lastYearDate = lastYear.withDayOfMonth(date.getDayOfMonth());
int lastYearDay = lastYearDate.getDayOfYear();
System.out.printf("%d-%d去年是第%d天%n", lastYear.getMonthValue(), date.getDayOfMonth(), lastYearDay);
// 5. 判断生日差多少天 (假设用户输入的是一个固定的生日)
System.out.println("请输入你的生日 (格式同上):");
String birthdayInput = scanner.nextLine();
LocalDate birthday = LocalDate.parse(birthdayInput, formatter);
long daysBetween = ChronoUnit.DAYS.between(date, birthday);
System.out.printf("今天和你的生日相差 %d 天%n", daysBetween);
scanner.close();
}
}
```
阅读全文