JDK8版本之前的时间API(了解)
Data类
SimpleDateFormat类
SimpleDateFormat类指定格式查API帮助文档即可
SimpleDateFormatDemo.java
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class SimpleDateFormatDemo {
public static void main(String[] args) throws ParseException {
// SimpleDateFormat dateFormat = new SimpleDateFormat(); // 默认日期格式
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy年MM月dd日"); // 指定日期格式
Date date = new Date();
System.out.println(dateFormat.format(date));
String s = "2023年12月02日";
System.out.println(dateFormat.parse(s)); // 调用.parse必须保证字符串和SimpleDateFormat设定的日期格式相同才能解析
}
}
计算你来到这个世界多少天
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;
public class BtdCompute {
public static void main(String[] args) throws ParseException {
Scanner in = new Scanner(System.in);
System.out.println("请输入您的生日:xxxx年xx月xx日");
String s = in.next();
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy年MM月dd日");
Date btd = dateFormat.parse(s);
Date now = new Date();
long ms = now.getTime() - btd.getTime();
long d = ms / 1000 / 60 / 60 / 24;
System.out.println(d);
long y = d / 365;
System.out.println(y);
}
}
Calendar类
- Calendar 类是一个抽象类,不能创建对象。
Calendar 提供了一个类方法 getInstance,以获得此类型的一个通用的对象。Calendar 的 getInstance 方法返回一个 Calendar 对象,其日历字段已由当前日期和时间初始化:
Calendar rightNow = Calendar.getInstance();
- 获取和设置日期对象时,一般通过调用Calendar的静态成员变量来实现。
注意:
月份是0~11
星期1~7分别对应[日 一 二 三 四 五 六]
Calendar的get方法样例
import java.util.Calendar;
public class CalendarDemo {
public static void main(String[] args) {
Calendar calendar = Calendar.getInstance();
System.out.println(calendar.get(Calendar.YEAR));
/*月份是0~11*/
System.out.println(calendar.get(Calendar.MONTH));
System.out.println(calendar.get(Calendar.DAY_OF_MONTH));
/*星期是1~7
日 一 二 三 四 五 六
1 2 3 4 5 6 7
*/
System.out.println(calendar.get(Calendar.DAY_OF_WEEK));
}
}
Calendar和Date类对象转换
判断某一天是否是疯狂星期四
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
public class CalendarTest1 {
public static void main(String[] args) throws ParseException {
Scanner in = new Scanner(System.in);
System.out.println("请输入日期:xxxx年xx月xx日");
String s = in.next();
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy年MM月dd日");
Date date = dateFormat.parse(s);
Calendar calendar = Calendar.getInstance();
calendar.setTime(date); // 将Date对象转换为Calendar对象
// calendar.set(2023,11,30); //设置日期为2023年12月30(周六)
// calendar.set(2023,10,30); //设置日期为2023年11月30(周四)
int week = calendar.get(Calendar.DAY_OF_WEEK);
System.out.println((week == 5));
}
}
判断输入日期是一年中的哪一天
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Scanner;
public class CalendarTest2 {
public static void main(String[] args) throws ParseException {
Scanner in = new Scanner(System.in);
System.out.println("请输入日期:xxxx年xx月xx日");
String s = in.next();
SimpleDateFormat dateFormat = new SimpleDateFormat("yy年MM月dd日");
Date date = dateFormat.parse(s);
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
System.out.println(calendar.get(Calendar.DAY_OF_YEAR));
}
}
JDK8版本及之后的时间API(即查即用即可)
日历类
日期格式化类
时间类
时间间隔工具类
根据输入的生日判断年龄
public class GetAge {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
System.out.println("请输入生日:xxxx年xx月xx日");
String s = in.next();
DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy年M月d日");
LocalDate btd = LocalDate.parse(s, dateTimeFormatter);
LocalDate now = LocalDate.now();
System.out.println(ChronoUnit.YEARS.between(btd, now));
}
}