LocalDateTime 相关方法

文章目录

  • 1、获取日期/时间/日期时间
  • 2、获取年月日时分秒
  • 3、给定数值生成日期时间
  • 4、格式化(日期时间->字符串)
  • 5、解析(字符串->日期时间)
  • 6、设定具体值
  • 7、日期时间的加减
  • 8、小测试(日期->日期时间)

注意:本文中相关变量与对应的类型关系为

  • datexxx -> LocalDate
  • timexxx -> LocalTime
  • dateTimexxx -> LocalDateTime

1、获取日期/时间/日期时间

// 获取当前日期
LocalDate date1 = LocalDate.now();		// 2020-09-04
// 获取当前时间
LocalTime time1 = LocalTime.now();		// 10:57:10.594
// 获取当前日期时间
LocalDateTime dateTime1 = LocalDateTime.now();  		// 2020-09-04T10:57:10.594

// 从 LocalDateTime 获取 LocalDate 
LocalDate dateTime1WithDate = dateTime1.toLocalDate();	// 2020-09-04
// LocalDateTime 获取 LocalTime
LocalTime dateTime1WithTime = dateTime1.toLocalTime();	// 10:57:10.594

2、获取年月日时分秒

// 年
int year = dateTime1.getYear();             // 2020
// 月(月的名称,例如:September)
Month month = dateTime1.getMonth();         // September
// 月(月的序号,例如:9)
int monthValue = dateTime1.getMonthValue(); // 9
// 日
int dayOfMonth = dateTime1.getDayOfMonth(); // 4
// 时
int hour = dateTime1.getHour();             // 10
// 分
int minute = dateTime1.getMinute();         // 57
// 秒
int second = dateTime1.getSecond();         // 10
// 2020年9月(SEPTEMBER)4日 10时57分10秒
// LocalDate 和 LocalTime 也可以使用如上方法

3、给定数值生成日期时间

// 生成日期
LocalDate date2 = LocalDate.of(2020, 9, 3); 	// 2020-09-03
// 生成时间
LocalTime time2 = LocalTime.of(22, 30, 59);     // 22:30:59
// 生成日期时间(月份格式,形如:9)
LocalDateTime dateTime2WithMonth = LocalDateTime.of(2020, 8, 1, 16, 29, 3); // 2020-08-01T16:29:03
// 生成日期时间(月份格式,形如:APRIL)
LocalDateTime dateTime2WithMonthValue = LocalDateTime.of(2020, Month.APRIL, 6, 19, 23, 2);  // 2020-04-06T19:23:02
// 生成日期时间(根据 LocalDate 和 LocalTime)
LocalDateTime dateTimeWithdt = LocalDateTime.of(date2, time2);		// 2020-09-03T22:30:59

4、格式化(日期时间->字符串)

// 格式化日期
DateTimeFormatter dateFormatter = DateTimeFormatter.ofPattern("yyyy/MM/dd");
String dateStr = dateFormatter.format(LocalDate.now()); 			// 2020/09/04
// 格式化时间
DateTimeFormatter timeFormatter = DateTimeFormatter.ofPattern("HH:mm:ss");
String timeStr = timeFormatter.format(LocalTime.now()); 			// 10:57:10
// 格式化日期时间
DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy/MM/dd HH:mm:ss");
String dateTimeStr = dateTimeFormatter.format(LocalDateTime.now()); // 2020/09/04 10:57:10

5、解析(字符串->日期时间)

// 使用默认解析格式(输入要符合格式)
LocalTime time3 = LocalTime.parse("20:30:55");      // 20:30:55
LocalDate date3 = LocalDate.parse("2020-10-03");    // 2020-10-03
LocalDateTime dateTime3 = LocalDateTime.parse("2020-03-04T13:45:55");   // 2020-03-04T13:45:55

// 自定义解析格式
LocalDate date4 = LocalDate.parse("2020/03/04", DateTimeFormatter.ofPattern("yyyy/MM/dd")); // 2020-03-04
LocalTime time4 = LocalTime.parse("20/01/23", DateTimeFormatter.ofPattern("HH/mm/ss"));     // 20:01:23
LocalDateTime dateTime4 = LocalDateTime.parse("2020/05/06 23/34/45",
    DateTimeFormatter.ofPattern("yyyy/MM/dd HH/mm/ss"));	// 2020-05-06T23:34:45

6、设定具体值


LocalDate date5 = date4.withYear(1999).withMonth(9).withDayOfMonth(25); // 1999-09-25
LocalTime time5 = time4.withHour(1).withMinute(2).withSecond(3);        // 01:02:03
LocalDateTime dateTime5 = dateTime4.withYear(1998).withMonth(3).withDayOfMonth(31)
    .withHour(13).withMinute(10).withSecond(25);                    	// 1998-03-31T13:10:25

7、日期时间的加减

// 加
LocalDate date6 = date5.plusYears(1).plusMonths(1).plusDays(1);         // 2000-10-26
LocalTime time6 = time5.plusHours(1).plusMinutes(1).plusSeconds(1);     // 02:03:04
LocalDateTime dateTime6 = dateTime5.plusYears(1).plusMonths(1).plusDays(1)
    .plusHours(1).plusMinutes(1).plusSeconds(1);                    	// 1999-05-01T14:11:26
// 减
LocalDate date7 = date6.minusYears(1).minusMonths(1).minusDays(1);      // 1999-09-25
LocalTime time7 = time6.minusHours(1).minusMinutes(1).minusSeconds(1);  // 01:02:03
LocalDateTime dateTime7 = dateTime6.minusYears(1).minusMonths(1).minusDays(1).
    minusHours(1).minusMinutes(1).minusSeconds(1);                  	// 1998-03-31T13:10:25

8、小测试(日期->日期时间)

/*
* 八、相关功能:查询某一个日期(不含时间)内的数据
*    日期 - > 日期时间
*
* 当用户选择某一天的数据,如:2020/09/04 - 2020/09/05
* 数据库日期格式为"yyyy/MM/dd HH:mm:ss",所以将 日期 转换为 日期时间 时,会变为:2020/09/04 00:00:00 - 2020/09/05 00:00:00
* 导致无法查询截止日期那一天的数据,所以需要对日期进行特殊处理
* 将截至日期转换为日期时间,然后(+1 day)(-1 second)
* */
LocalDate localDate = LocalDate.parse("2020/09/04", DateTimeFormatter.ofPattern("yyyy/MM/dd"));
LocalTime localTime = LocalTime.of(0, 0, 0);
LocalDateTime localDateTime = LocalDateTime.of(localDate, localTime);
LocalDateTime localDateTime1 = localDateTime.plusDays(1).minusSeconds(1); 
// 处理完毕,截止日期为:2020-09-04T23:59:59

你可能感兴趣的:(JavaSE,java,javase)