第一代 Date
Date date = new Date();
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy年MM月dd日hh:mm:ss");
String format = simpleDateFormat.format(date);
第二代 Calendar
Calendar instance = Calendar.getInstance();
System.out.println(instance.get(Calendar.YEAR)); //年
System.out.println(instance.get(Calendar.MONTH)+1); //月 +1
System.out.println(instance.get(Calendar.DAY_OF_MONTH)); //日
System.out.println(instance.get(Calendar.HOUR_OF_DAY)); //时
System.out.println(instance.get(Calendar.MINUTE)); //分
System.out.println(instance.get(Calendar.SECOND)); //秒
前两代不足
1.可变性:像日期和时间这样的类应该是不可变的
2.偏移性:Date 时间年份从1900开始,月份都是从0开始
3.格式化:格式化Date有用,calendar没用
3.不是线程安全;不能处理闰秒等(每隔2天 多出1s)
第三代 JDK8加入
LocalDate 日期
LocalTime 时间
LocalDateTime 日期时间
LocalDateTime now = LocalDateTime.now();
System.out.println(now); //2022-10-25T14:53:15.885
转换格式:
LocalDateTime now = LocalDateTime.now();
DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss E");
String format = dateTimeFormatter.format(now);
System.out.println(format); //2022-10-25 15:28:39 星期二
instant
Instant now = Instant.now();
Date from = Date.from(now);
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH-mm-ss E");
String format = simpleDateFormat.format(from);
System.out.println(format); //2022-10-25 15-36-29 星期二