java8 日期时间Api LocalDate、LocalTime、LocalDateTime

1、LocalDate

(1)构造

  • 通过字符串构造
LocalDate stringParse = LocalDate.parse("2021-09-29");
  • 通过年月日构造
LocalDate ofLocalDate = LocalDate.of(2021, 9, 29); // 年月日
LocalDate ofLocalDate1 = LocalDate.ofYearDay(2021, 255); // 年 天数
  • 静态方法构造
LocalDate nowLocalDate = LocalDate.now();

(2)获取年月日

LocalDate localDate = LocalDate.of(2021, 1,10);

// 获取年
int year = localDate.getYear();
System.out.println(year);

// 一个是获取美剧一个是获取具体对应的第n个月 分别对应1-12
Month month = localDate.getMonth();
System.out.println(month);
int monthValue = localDate.getMonthValue();
System.out.println(monthValue);

// 天数都是从1开始
int dayOfMonth = localDate.getDayOfMonth();
DayOfWeek dayOfWeek = localDate.getDayOfWeek();
int dayOfYear = localDate.getDayOfYear();
System.out.println(dayOfYear);
System.out.println(dayOfWeek);
System.out.println(dayOfMonth);

输出:
2021
JANUARY
1
10
SUNDAY
10

(3)日期操作

// 直接定位年份,月天数,月,返回新的LocalDate对象
LocalDate localDate1 = localDate.withYear(2055);
LocalDate localDate2 = localDate.withDayOfMonth(20);
LocalDate localDate2 = localDate.withDayOfYear(20);
LocalDate localDate3 = localDate.withMonth(1);
// 取本月第1天:
LocalDate firstDayOfThisMonth = localDate.with(TemporalAdjusters.firstDayOfMonth()); // 2018-04-01
// 取本月第2天:
LocalDate secondDayOfThisMonth = localDate.withDayOfMonth(2); // 2018-04-02
// 取本月最后一天,再也不用计算是28,29,30还是31:
LocalDate lastDayOfThisMonth = localDate.with(TemporalAdjusters.lastDayOfMonth()); // 2018-04-30
// 取下一天:
LocalDate firstDayOfNextMonth = lastDayOfThisMonth.plusDays(1); // 变成了2018-05-01
// 取2017年1月第一个周一:
LocalDate firstMondayOf2017 = LocalDate.parse("2017-01-01").with(TemporalAdjusters.firstInMonth(DayOfWeek.MONDAY)); // 2017-01-02 
// 获取当月有多少天
localDate.lengthOfMonth()
// 获取当年有多少天
localDate.lengthOfYear()
// 当年是否为闰年
localDate.isLeapYear()
  
  
// 日期加减操作
// 将当前日期减一天
localDate.minusDays(long days)
// 将当前日期减一周
localDate.minusWeeks(long weeks)
// 将当前日期减一月
localDate.minusMonths(long months)
// 将当前日期减一年
localDate.minusYears(long years)
// 将当前日期加一天
localDate.plusDays(long days)
// 将当前日期加一周
localDate.plusWeeks(long weeks)
// 将当前日期加一月
localDate.plusMonths(long months)
// 将当前日期加一年
localDate.plusYears(long years)

(4)格式化

DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyMMdd");
String format = localDate.format(formatter);

JavaApi文档:
All letters 'A' to 'Z' and 'a' to 'z' are reserved as pattern letters. The following pattern letters are defined:

  Symbol  Meaning                     Presentation      Examples
  ------  -------                     ------------      -------
   G       era                         text              AD; Anno Domini; A
   u       year                        year              2004; 04
   y       year-of-era                 year              2004; 04
   D       day-of-year                 number            189
   M/L     month-of-year               number/text       7; 07; Jul; July; J
   d       day-of-month                number            10

   Q/q     quarter-of-year             number/text       3; 03; Q3; 3rd quarter
   Y       week-based-year             year              1996; 96
   w       week-of-week-based-year     number            27
   W       week-of-month               number            4
   E       day-of-week                 text              Tue; Tuesday; T
   e/c     localized day-of-week       number/text       2; 02; Tue; Tuesday; T
   F       week-of-month               number            3

   a       am-pm-of-day                text              PM
   h       clock-hour-of-am-pm (1-12)  number            12
   K       hour-of-am-pm (0-11)        number            0
   k       clock-hour-of-am-pm (1-24)  number            0

   H       hour-of-day (0-23)          number            0
   m       minute-of-hour              number            30
   s       second-of-minute            number            55
   S       fraction-of-second          fraction          978
   A       milli-of-day                number            1234
   n       nano-of-second              number            987654321
   N       nano-of-day                 number            1234000000

   V       time-zone ID                zone-id           America/Los_Angeles; Z; -08:30
   z       time-zone name              zone-name         Pacific Standard Time; PST
   O       localized zone-offset       offset-O          GMT+8; GMT+08:00; UTC-08:00;
   X       zone-offset 'Z' for zero    offset-X          Z; -08; -0830; -08:30; -083015; -08:30:15;
   x       zone-offset                 offset-x          +0000; -08; -0830; -08:30; -083015; -08:30:15;
   Z       zone-offset                 offset-Z          +0000; -0800; -08:00;

   p       pad next                    pad modifier      1

   '       escape for text             delimiter
   ''      single quote                literal           '
   [       optional section start
   ]       optional section end
   #       reserved for future use
   {       reserved for future use
   }       reserved for future use

2、LocalTime

(1)构造

// 获取当前时间
LocalTime.now()
// 根据参数设置时间,参数分别为时,分
LocalTime.of(int hour, int minute) 
// 根据参数设置时间,参数分别为时,分,秒
LocalTime.of(int hour, int minute, int second)

(2)获取时分秒

// 获取当前时间的小时数
localTime.getHour()
// 获取当前时间的分钟数
localTime.getMinute()
// 获取当前时间的秒数
localTime.getSecond()

(3)时间操作

// 将参数中的"小时"替换localTime中的"小时"
localTime.withHour(int hour)
// 将参数中的"分钟"替换localTime中的"分钟"
localTime.withMinute(int minute)
// 将参数中的"秒"替换localTime中的"秒"
localTime.withSecond(int second)

// 将当前时间减一小时
localTime.minusHours(long hours)
// 将当前时间减一分钟
localTime.minusMinutes(long minutes)
// 将当前时间减一秒
localTime.minusSeconds(long seconds)
// 将当前时间加一小时
localTime.plusHours(long hours)
// 将当前时间加一分钟
localTime.plusMinutes(long minutes)
// 将当前时间加一秒
localTime.plusSeconds(long seconds)

(3)LocalDateTime

(1)构造(其他操作基本类似)

// 获取当前日期时间
LocalDateTime localDateTime = LocalDateTime.now();
// 设置日期
LocalDateTime localDateTime1 = LocalDateTime.of(2019, Month.SEPTEMBER, 10, 14, 46, 56);
LocalDateTime localDateTime2 = LocalDateTime.of(localDate, localTime);
LocalDateTime localDateTime3 = localDate.atTime(localTime);
LocalDateTime localDateTime4 = localTime.atDate(localDate);
// 获取LocalDate
LocalDate localDate2 = localDateTime.toLocalDate();
// 获取LocalTime
LocalTime localTime2 = localDateTime.toLocalTime();
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值