java8 ChronoField日期时间枚举类
前言:
ChronoField是java8提供的一个枚举类,里面定义了很多表示日历的字段,提供基于字段的访问来操纵日期,时间或日期时间, 通过实现TemporalField来扩展标准字段集。
一:ChronoField类概要
包目录:java.time.temporal
类型:枚举类 public enum ChronoField implements TemporalField
一组标准字段。
这组字段提供基于字段的访问来操纵日期,时间或日期时间。 可以通过实现TemporalField来扩展标准字段集。
这些字段旨在适用于多个日历系统。 例如,大多数非ISO日历系统将日期定义为年,月和日,只是略有不同的规则。 每个字段的文档说明了它的运作方式。
实现要求:
这是一个最终的,不可变的和线程安全的枚举。
第一种
public static void main(String[] args) {
LocalDate now = LocalDate.now();
System.out.println("当前日期:"+now);//2021-12-01
System.out.println("下周二:"+now.plusWeeks(1).with(ChronoField.DAY_OF_WEEK, 2)); //2021-12-07
System.out.println("上周二:"+now.minusWeeks(1).with(ChronoField.DAY_OF_WEEK, 2)); //2021-11-23
LocalTime time = LocalTime.now();
System.out.println("当前时间:"+time);//18:07:47.992580600
System.out.println("小时:"+time.get(ChronoField.HOUR_OF_DAY));//18
System.out.println("分钟:"+time.get(ChronoField.MINUTE_OF_HOUR));//7
}
第二种
Calendar cal = Calendar.getInstance();
Date date=new Date;//现在的日期
cal.setTime(date);
Integer year=cal.get(Calendar.YEAR);//获取年
Integer month = cal.get(Calendar.MONTH)+1;//获取月(月份从0开始,如果按照中国的习惯,需要加一)
Integer day_moneth=cal.get(Calendar.DAY_OF_MONTH);//获取日(月中的某一天)
Integer day_week=cal.get(Calendar.DAY_OF_WEEK);//获取一周内的某一天
获取指定日期年、月、日
String str_date="2020-01-03";
//将字符串转化为日期格式
Date date = new SimpleDateFormat("yyyy-MM-dd").parse(str_date);
Calendar cal = Calendar.getInstance();
cal.setTime(date);
Integer year=cal.get(Calendar.YEAR);//获取年
Integer month = cal.get(Calendar.MONTH)+1;//获取月(月份从0开始,如果按照中国的习惯,需要加一)
Integer day_moneth=cal.get(Calendar.DAY_OF_MONTH);//获取日(月中的某一天)
Integer day_week=cal.get(Calendar.DAY_OF_WEEK);//获取一周内的某一天
链接:https://blog.csdn.net/weixin_49114503/article/details/121658418