问题描述
我们计从 1949 年 10 月 1 日至 1949 年 10 月 2 日为经过了 1 天。
请问从 1949 年 10 月 1 日至 2022 年 1 月 1 日经过了多少天?
答案提交
这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。
代码如下
//LocalDate类是Java 8中日期时间功能里表示一个本地日期的类,它的日期是无时区属性的。
// 可以用来表示生日、节假日期等等。这个类用于表示一个确切的日期,而不是这个日期所在的时间
import java.time.LocalDate;
public class langqiao2 {
public static void main(String[] args) {
// 方法1
LocalDate date1 = LocalDate.of(1949, 10, 1);
LocalDate date2 = LocalDate.of(2022, 1, 1);
//方法2
// LocalDate date1=LocalDate.now();
// LocalDate date2=LocalDate.now();
// // 1949 年 10 月 1 日
// date1=date1.withYear(1949);
// date1=date1.withMonth(10);
// date1=date1.withDayOfMonth(1);
// // 2022 年 1 月 1 日
// date2=date2.withYear(2022);
// date2=date2.withMonth(1);
// date2=date2.withDayOfMonth(1);
//判断:由于未知循环次数所以用while循环
int sum=0;
while (!date1.equals(date2)){
sum++;
date1=date1.plusDays(1);//LocalDate计算的日期加法
}
System.out.println(sum);
}
}
笔记总结
一、LocalDateTime运用
1、LocalDateTime 比 Date使用起来更为方便,两者可以相互进行转化。
2、LocalDate类是Java 8中日期时间功能里表示一个本地日期的类,它的日期是无时区属性的。可以用来表示生日、节假日期等等。这个类用于表示一个确切的日期,而不是这个日期所在的时间(如java.util.Date中的2000.01.01表示的实际是这一天的00:00这个瞬间)。
3、LocalDate类位于java.time包下,命名叫java.time.LocalDate,创建出来的实例也是不可变对象,所以涉及它的计算方法将返回一个新的LocalDate。
4、多种方式可以创建出LocalDate实例。
第一种方法是使用now()方法获得值为今天当日的LocalDate对象:
LocalDate localDate = LocalDate.now();
另一种方法是使用年月日信息构造出LocalDate对象:(如本题)
LocalDate localDate2 = LocalDate.of(2022, 12, 3);
LocalDate的of()方法创建出一个指定年月日的日期,并且没有时区信息。
5、得到当前日期的年、月、日
int getYear()
int getMonthValue()
int getDayOfMonth()
得到当前日期是星期几,作为DayOfWeek类的一个实例返回。调用getValue来得到1~7之间的一个数,表示这是星期几,1表示星期一,7表示星期日。
DayOfWeek getDayOfWeek
6、LocalDate计算(本题关键)
你可以进行一堆简单的日期计算
如:生成当前日期之后或之前n天的日期
LocalDate plusDays(int n)
LocalDate minusDays(int n)
更多:plusDays(),plusWeeks(),plusMonths(),plusYears()
minusDays(),minusWeeks(),minusMonths(),minusYears()
二、循环的选择
7、for循环适合已知循环次数的操作,while循环适合未知循环次数的操作如:本题。
8、for循环的表达式为:for(单次表达式;条件表达式;末尾循环体){中间循环体;}。
* for循环执行末尾循环体后将再次进行条件判断,若条件还成立,则继续重复上述循环,当条件不成立时则跳出当下for循环。
while循环的表达式为:while(表达式){循环体}。
*while循环当满足条件时进入循环,进入循环后,当条件不满足时,执行完循环体内全部语句后再跳出(而不是立即跳出循环)。