LocalDate主要的三个API类:
java.time.LocalDate;
java.time.LocalDateTime;
java.time.LocalTime;
LocatDate对象获取:
@Test
void contextLoads() {
// 获取方式
LocalDate localDate = LocalDate.now();
System.out.println(localDate);
LocalDate localDate1 = LocalDate.of(2020, 5, 23);
System.out.println(localDate1);
// 2020-09-28
// 2020-05-23
int year = localDate.getYear(); // 取年
int monthValue = localDate.getMonthValue(); // 取月
Month month = localDate.getMonth(); // 取月的枚举对象
int monthValue1 = month.getValue(); // 具体值可以通过该枚举对象获取
// 除此之外Month还有一些获取其他信息的方法
int maxDaysLength = month.maxLength(); // 该月的最大天数
int minDaysLength = month.minLength(); // 该月的最小天数
int dayOfMonth = localDate.getDayOfMonth(); // 按当月取天数
int dayOfYear = localDate.getDayOfYear(); // 按本年取天数
DayOfWeek dayOfWeek = localDate.getDayOfWeek(); // 按本周取天数?
// 和月枚举对象一样,这里也是一个周枚举对象
int value = dayOfWeek.getValue();
System.out.println(dayOfWeek); // 打印为 MONDAY ....
}
private static void cryptTest() {
final String PASSWORD = "123456";
PasswordEncoder passwordEncoder = new BCryptPasswordEncoder();
String encode = passwordEncoder.encode(PASSWORD);
System.out.println(encode);
boolean matches = passwordEncoder.matches(PASSWORD, encode);
System.out.println(matches);
}
LocalDateTime & LocalTime:
@Test
void contextLoads() {
LocalDateTime localDateTime1 = LocalDateTime.now();
LocalDateTime localDateTime2 = LocalDateTime.of(2020, 2, 2, 13, 24, 52);
System.out.println(localDateTime1); // 2020-09-28T16:01:48.248
System.out.println(localDateTime2); // 2020-02-02T13:24:52
LocalTime localTime1 = LocalTime.now();
LocalTime localTime2 = LocalTime.of(20, 2, 2);
System.out.println(localTime1); // 16:03:41.330
System.out.println(localTime2); // 20:02:02
int hour = localTime1.getHour();
int minute = localTime1.getMinute();
int second = localTime1.getSecond();
int nano = localTime1.getNano();
System.out.println("时 -> " + hour); // 时 -> 16
System.out.println("分 -> " + minute); // 分 -> 6
System.out.println("秒 -> " + second); // 秒 -> 26
System.out.println("Nano -> " + nano); // Nano -> 206000000
}
GET方法

SET方法

增加时间

减少时间

public class DateTest { public static void main(String[] args) { LocalDate now1 = LocalDate.now(); LocalTime now2 = LocalTime.now(); LocalDateTime now3 = LocalDateTime.now(); System.out.println("LocalDate.now() -> " + now1); System.out.println("LocalTime.now() -> " + now2); System.out.println("LocalDateTime.now() -> " + now3); /* LocalDate.now() -> 2020-04-19 LocalTime.now() -> 21:16:03.854 LocalDateTime.now() -> 2020-04-19T21:16:03.854 */ LocalDateTime localDateTime = LocalDateTime.now(); System.out.println("localDateTime.getDayOfWeek() -> " + localDateTime.getDayOfWeek() ); // 按周算天 System.out.println("localDateTime.getDayOfMonth() -> " + localDateTime.getDayOfMonth() ); // 按月算天 System.out.println("localDateTime.getDayOfYear() -> " + localDateTime.getDayOfYear() ); // 按年算天 /* localDateTime.getDayOfWeek() -> SUNDAY localDateTime.getDayOfMonth() -> 19 localDateTime.getDayOfYear() -> 110 */ System.out.println( localDateTime.getSecond() );// 取秒 System.out.println( localDateTime.getMinute() );// 取分 System.out.println( localDateTime.getHour() );// 取时 System.out.println( localDateTime.getMonth() );// 取月 英文大写 System.out.println( localDateTime.getMonthValue() );// 取月 数值表示 System.out.println( localDateTime.getYear() );// 取年 // set × with √ } }
instant 瞬时时间 ,精度达到纳秒级
public class DateTest { public static void main(String[] args) { Instant instant = Instant.now(); System.out.println(instant); // 2020-04-19T13:47:58.712Z 本初子午线的标准时间 // 我们是东八时区,添加8小时的偏移量 OffsetDateTime offsetDateTime = instant.atOffset(ZoneOffset.ofHours(8)); System.out.println(offsetDateTime); // 从实例获取毫秒数 时间戳 long epochMilli = instant.toEpochMilli(); System.out.println(epochMilli); // 通过时间戳注入产生instant实例 Instant epochMilli1 = Instant.ofEpochMilli(epochMilli); System.out.println(epochMilli1); } }
DateTimeFormatter
public class DateTest { public static void main(String[] args) { // 预定义的标准格式 DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ISO_LOCAL_DATE_TIME; // 事件对象 LocalDateTime now = LocalDateTime.now(); // 转换格式 日期 -> 字符串格式 String format = dateTimeFormatter.format(now); // 格式 System.out.println( now ); System.out.println( format ); // 日期 转 字符串格式 TemporalAccessor parse = dateTimeFormatter.parse("2020-03-19T22:09:46.345"); System.out.println(parse); DateTimeFormatter dateTimeFormatter1 = DateTimeFormatter.ofLocalizedDate(FormatStyle.FULL); // ofLocalizedDateTime(); // ofLocalizedDate(); 按Date就支持FULL全格式 // ofPattern("自定义格式"); "yyyy-MM-dd hh:mm:ss" // FormatStyle.FULL 2020年4月19日 星期日 // FormatStyle.LONG 2020年4月19日 下午10时15分01秒 // FormatStyle.MEDIUM 2020-4-19 22:14:28 // FormatStyle.SHORT 20-4-19 下午10:16 String format1 = dateTimeFormatter1.format(now); System.out.println(now); System.out.println(format1); TemporalAccessor parse1 = dateTimeFormatter1.parse(format1); System.out.println(parse1); } }
案例,制作日历:
@Test void contextLoads() { localDateCalendar(); } private static void localDateCalendar() { LocalDate now = LocalDate.now(); int year = now.getYear(); int month = now.getMonth().getValue(); int dayOfMonth = now.getDayOfMonth(); // 设置这个月的第一天 now = now.minusDays(dayOfMonth - 1); // 找到这一天为周几 int value = now.getDayOfWeek().getValue(); // 开始渲染控制台输出样式 System.out.println("Mon Tue Wed Thu Fri Sat Sun"); for (int i = 1; i < value; i++) System.out.print(" "); while (now.getMonthValue() == month) { System.out.printf("%3d", now.getDayOfMonth()); if (now.getDayOfMonth() == dayOfMonth) System.out.print("*"); else System.out.print(" "); now = now.plusDays(1); if (now.getDayOfWeek().getValue() == 1) System.out.println(); } if (now.getDayOfWeek().getValue() != 1) System.out.println(); }
打印结果:
Mon Tue Wed Thu Fri Sat Sun
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28* 29 30
其他API
ZoneId
ZoneDateTime
Clock
Duration
Period
TemporalAdjuster
TemporalAdjusters