用Java编写从键盘输入2个日历,分别是2022年10月5日和1987年3月2日,计算2个日历相差多少小时并显示
时间: 2024-11-05 07:30:40 浏览: 17
在Java中,你可以使用`java.time.LocalDate`类来表示日期,并通过`java.time.Period`类来计算两个日期之间的差值,然后转换成小时数。以下是一个简单的示例程序:
```java
import java.time.LocalDate;
import java.time.Period;
public class Main {
public static void main(String[] args) {
// 输入的两个日期
LocalDate date1 = LocalDate.of(2022, 10, 5);
LocalDate date2 = LocalDate.of(1987, 3, 2);
// 计算日期差
Period difference = Period.between(date1, date2);
// 将Days转成Hours
long hoursDifference = difference.getDays() * 24; // 因为一天有24小时
System.out.println("两个日期相差了 " + hoursDifference + " 小时");
}
}
```
运行这个程序,它会输出2022年10月5日和1987年3月2日之间相差的确切小时数。
相关问题
java编写输入日期的年份选择日历
A:
可以使用Java的Calendar类和SimpleDateFormat类来实现输入日期的年份选择日历,具体实现步骤如下:
1. 接收输入的年份和月份。
``` java
Scanner scanner = new Scanner(System.in);
int year = scanner.nextInt();
int month = scanner.nextInt();
```
2. 创建Calendar实例,并将日期设置为输入的年份和月份。
``` java
Calendar calendar = Calendar.getInstance();
calendar.set(year, month - 1, 1);
```
注意月份在Calendar中是从0开始的,所以需要将输入的月份减1。
3. 获取该月的第一天是星期几,并打印日历表头。
``` java
int firstDayOfWeek = calendar.get(Calendar.DAY_OF_WEEK);
System.out.println("日 一 二 三 四 五 六");
for (int i = 1; i < firstDayOfWeek; i++) {
System.out.print(" ");
}
```
4. 获取该月的天数,并打印日历中的日期。
``` java
int daysOfMonth = calendar.getActualMaximum(Calendar.DAY_OF_MONTH);
for (int i = 1; i <= daysOfMonth; i++) {
System.out.printf("%2d ", i);
if ((firstDayOfWeek + i - 1) % 7 == 0) {
System.out.println();
}
}
```
注意在打印日期时需要对齐格式,例如:1号需要打印成“01”。
完整代码如下:
``` java
import java.util.Calendar;
import java.util.Scanner;
public class CalendarDemo {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("请输入年份和月份(空格分隔):");
int year = scanner.nextInt();
int month = scanner.nextInt();
Calendar calendar = Calendar.getInstance();
calendar.set(year, month - 1, 1);
int firstDayOfWeek = calendar.get(Calendar.DAY_OF_WEEK);
System.out.println("日 一 二 三 四 五 六");
for (int i = 1; i < firstDayOfWeek; i++) {
System.out.print(" ");
}
int daysOfMonth = calendar.getActualMaximum(Calendar.DAY_OF_MONTH);
for (int i = 1; i <= daysOfMonth; i++) {
System.out.printf("%2d ", i);
if ((firstDayOfWeek + i - 1) % 7 == 0) {
System.out.println();
}
}
}
}
```
运行结果:
```
请输入年份和月份(空格分隔):2022 9
日 一 二 三 四 五 六
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
```
使用Java完成从键盘输入年份和月份, 输出该月份的日历表【需求】: (1) 从键盘输入年份和月份。(2)输出为:该月份对应的日历表。
以下是使用Java实现从键盘输入年份和月份,输出该月份的日历表的代码:
```java
import java.util.Scanner;
public class Calendar {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.print("请输入年份:");
int year = input.nextInt();
System.out.print("请输入月份:");
int month = input.nextInt();
// 获取该月份的天数
int days = getDaysOfMonth(year, month);
// 获取该月份第一天是星期几
int firstDayOfWeek = getFirstDayOfWeek(year, month);
// 输出日历表头
System.out.println("日\t一\t二\t三\t四\t五\t六");
// 输出该月份的日历表
int count = 1;
for (int i = 0; i < 6; i++) {
for (int j = 0; j < 7; j++) {
if ((i == 0 && j < firstDayOfWeek) || count > days) {
System.out.print("\t");
} else {
System.out.print(count + "\t");
count++;
}
}
System.out.println();
}
}
// 获取该月份的天数
public static int getDaysOfMonth(int year, int month) {
int days;
if (month == 2) {
if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) {
days = 29;
} else {
days = 28;
}
} else if (month == 4 || month == 6 || month == 9 || month == 11) {
days = 30;
} else {
days = 31;
}
return days;
}
// 获取该月份第一天是星期几
public static int getFirstDayOfWeek(int year, int month) {
int dayOfWeek;
int century = year / 100;
year = year % 100;
if (month == 1 || month == 2) {
month += 12;
year--;
}
dayOfWeek = (1 + 26 * (month + 1) / 10 + year + year / 4 + century / 4 + 5 * century) % 7;
return dayOfWeek;
}
}
```
运行程序,输入年份和月份,即可输出该月份的日历表。例如,输入2021和7,即可输出2021年7月的日历表:
```
请输入年份:2021
请输入月份:7
日 一 二 三 四 五 六
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
```
阅读全文