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();