java8新增time时间接口使用说明

说明

  • java8引入一套全新时间日期API,位于java.time包下,包下所有类线程安全,且不可变。
  • 主要类
    1. Instan 处理时间戳
    2. LocalDate 处理日期,如2020-10-23,可存储生日、纪念日、入职日期等。
    3. LocalTime 处理不包含日期的时间,如:HH:MM:ss:nnn
    4. LocalDateTime 处理日期和时间,不包含时区信息
    5. ZonedDateTime 处理包含时区的日期和时间,偏移量以UTC(格林威治时间)为准
    6. MonthDay 处理月日,不包含年,可以用来代表每年重复出现的一些日期或其他组合。
    7. Clock 获取时区下时间和日期,代替System.currentTimelnMillis()与TimeZone.getDefault()方法。
    8. YearMonth 处理年月
    9. Period 时间差处理类
    10. DateTimeFormatter时间格式处理类

主要方法

  • get***() 获取年、月、周、日、时、分、秒、纳秒
  • plus**() 增加年、月、周、日、时、分、秒、纳秒
  • minus**() 减少年、月、周、日、时、分、秒、纳秒
  • is**() 比较连个时间前后顺序
  • equals() 两个时间是否相同
  • parse() 输入时间格式设置
  • format() 输出时间格式设置

LocalDate 操作当前日期

  • 日期获取
LocalDate today=LocalDate.now();
System.out.println("当前日期:"+today);

int year =today.getYear();
System.out.println("年:"+year);

int month=today.getMonthValue();
System.out.println("月:"+month);

int day=today.getDayOfMonth();
System.out.println("日:"+day);

int yearDay=today.getDayOfYear();
System.out.println("本年第几天:"+yearDay);

LocalDate date=LocalDate.of(2019, 12, 30);
System.out.println("今天是否为2019-12-30?"+date.equals(today));
  • 日期增加
LocalDate today=LocalDate.now();
System.out.println("当前日期:"+today);

LocalDate nextDay=today.plusDays(1);
System.out.println("一天后日期:"+nextDay);

LocalDate nextYear=today.plusYears(1);
System.out.println("一年后日期:"+nextYear);

LocalDate nextMonth=today.plusMonths(1);
System.out.println("一月后日期:"+nextMonth);

LocalDate nextWeek=today.plus(1, ChronoUnit.WEEKS); //支持年、月、日、周
System.out.println("一周后日期:"+nextWeek);
  • 日期减少
LocalDate today=LocalDate.now();
System.out.println("当前日期:"+today);

LocalDate beforDay=today.minusDays(1);
System.out.println("一天前日期:"+beforDay);

LocalDate beforYear=today.minusYears(1);
System.out.println("一年前日期:"+beforYear);

LocalDate beforMonth=today.minusMonths(1);
System.out.println("一月前日期:"+beforMonth);

LocalDate beforWeek=today.minus(1, ChronoUnit.WEEKS); //支持年、月、日、周
System.out.println("一周前日期:"+beforWeek);
  • 日期前后判断
LocalDate today=LocalDate.now();
System.out.println("当前日期:"+today);

LocalDate beforDay=today.minusDays(1);
System.out.println("一天前日期:"+beforDay);
System.out.println("当前日期:"+today+"在日期:"+beforDay+"前 "+today.isBefore(beforDay));
System.out.println("当前日期:"+today+"在日期:"+beforDay+"后 "+today.isAfter(beforDay));
  • 日期相差天数
LocalDate today=LocalDate.now();
System.out.println("当前日期:"+today);

LocalDate beforDay=today.minusDays(1);
System.out.println("一天前日期:"+beforDay);
Period peri=Period.between(today, beforDay);
System.out.println(today+" 与 "+beforDay+" 相差天数"+peri.getDays());  //支持天、月、周、年

MonthDay操作生日

LocalDate today=LocalDate.now();
LocalDate date=LocalDate.of(1993, 06, 01);
MonthDay birthday=MonthDay.of(date.getMonth(), date.getDayOfMonth());
MonthDay nowDay=MonthDay.from(today);
System.out.println("今天是否是生日?"+birthday.equals(nowDay));

YearMonth操作

YearMonth current=YearMonth.now();
System.out.println("当下年月:"+current+" 月天数:"+current.lengthOfMonth());

Clock 时区操作

System.out.println(Clock.systemDefaultZone());  //获取当前时区
System.out.println(Clock.systemUTC());  //获取当前时间

自定义时间格式

  • 设置传如时间格式
String format="20200110";
LocalDate formatDate=LocalDate.parse(format,DateTimeFormatter.BASIC_ISO_DATE);
System.out.println("时间"+formatDate);

format="2020 10 01";
DateTimeFormatter formatter=DateTimeFormatter.ofPattern("yyyy dd MM");
formatDate=LocalDate.parse(format, formatter);
System.out.printf("转换前:%s 转换后:%s %n",format,formatDate);
  • 设置输出时间格式
formatter=DateTimeFormatter.ofPattern("yyyy dd MM HH:mm");
LocalDateTime time=LocalDateTime.now();
String landding=time.format(formatter);
System.out.println(landding);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值