如題墩衙,筆試小題目跟啤,有Java 8 的LocalDate
加持鹅心,三行就結(jié)束了:
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.Scanner;
public class CalculateDays {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
try {
LocalDate end = LocalDate.parse(scanner.nextLine().trim(), DateTimeFormatter.ofPattern("yyyy,M,d"));
LocalDate begin = LocalDate.of(end.getYear(), 1, 1);
System.out.println("result is " + (end.toEpochDay() - begin.toEpochDay() + 1));
} catch (Exception ignored) {
System.out.println("invalid parameter");
}
}
}
輸入:2020,2,1
輸出:
result is 32
//年月日超出范圍輸出:invalid parameter
對(duì)輸入需要進(jìn)行trim()
宣渗,同時(shí)輸入格式是yyyy,M,d
债蜜,而不是yyyy,MM,dd
,后者的話蛛碌,如果輸入為個(gè)位數(shù)聂喇,會(huì)拋出轉(zhuǎn)換異常的。
需要注意的Java8里面的LocalDate
與LocalTime
對(duì)象描述的分別是日期數(shù)軸與時(shí)間數(shù)軸上的具體“一刻”:
LocalDate
LocalTime
public class LocalDateTest {
public static void main(String[] args) {
LocalDate date = LocalDate.now();
System.out.println("date = " + date);
System.out.println("date.getYear() = " + date.getYear());
System.out.println("date.getMonth().getValue() = " + date.getMonth().getValue());
System.out.println("date.getDayOfMonth() = " + date.getDayOfMonth());
System.out.println("date.getDayOfWeek() = " + date.getDayOfWeek());
LocalTime time = LocalTime.now();
System.out.println("time = " + time);
System.out.println("time.getHour() = " + time.getHour());
System.out.println("time.getMinute() = " + time.getMinute());
System.out.println("time.getSecond() = " + time.getSecond());
System.out.println("time.getNano() = " + time.getNano());
}
}