编程语言
首页 > 编程语言> > java8中时间的各种转换(LocalDateTime)

java8中时间的各种转换(LocalDateTime)

作者:互联网

java8中时间的各种转换(LocalDateTime)

1.将LocalDateTime转为自定义的时间格式的字符串

public static String getDateTimeAsString(LocalDateTime localDateTime, String format) {
  DateTimeFormatter formatter = DateTimeFormatter.ofPattern(format);
  return localDateTime.format(formatter);
}

2.将long类型的timestamp转为LocalDateTime

public static LocalDateTime getDateTimeOfTimestamp(long timestamp) {
  Instant instant = Instant.ofEpochMilli(timestamp);
  ZoneId zone = ZoneId.systemDefault();
  return LocalDateTime.ofInstant(instant, zone);
}

3.将LocalDateTime转为long类型的timestamp

public static long getTimestampOfDateTime(LocalDateTime localDateTime) {
  ZoneId zone = ZoneId.systemDefault();
  Instant instant = localDateTime.atZone(zone).toInstant();
  return instant.toEpochMilli();
}

4.将某时间字符串转为自定义时间格式的LocalDateTime

public static LocalDateTime parseStringToDateTime(String time, String format) {
  DateTimeFormatter df = DateTimeFormatter.ofPattern(format);
  return LocalDateTime.parse(time, df);
}

5 在当期日期上增加减少年月日、时分秒

@Test
public void test() {
//plusDays(), plusWeeks(), plusMonths(), plusYears(),plusHours()  向当前对象添加几天、几周、几个月、几年、几小时
LocalDateTime ld2 = LocalDateTime.of(2019, 2, 19, 11, 19, 59);
System.out.println(ld2);//2019-02-19T11:19:59

LocalDateTime ld3 = ld2.plusYears(2);//在当前的日期上在加两年
System.out.println(ld3);//2021-02-19T11:19:59

LocalDateTime ld4 = ld2.plusMonths(2);//在当前的日期上在加个月
System.out.println(ld4);//2019-04-19T11:19:59

LocalDateTime ld5 = ld2.plusWeeks(2);//在当前的日期上在加周  (2月28天 在加2周14天)
//ld2.plusDays(14);  //相当于
System.out.println(ld5);//2019-03-05T11:19:59

LocalDateTime ld6 = ld2.plusDays(2);//在当前的日期上在加两天
System.out.println(ld6);//2019-02-21T11:19:59

LocalDateTime ld7 = ld2.plusHours(2);//在当前的日期上在加个小时
System.out.println(ld7);//2019-02-19T13:19:59

}

2、减少

@Test
public void test() {
//minusMonths() / minusWeeks()/ minusDays()/minusYears()/minusHours() 从当前对象减去几月、几周、几天、几年、几小时
LocalDateTime ld2 = LocalDateTime.of(2019, 2, 19, 11, 19, 59);
System.out.println(ld2);//2019-02-19T11:19:59

LocalDateTime ld3 = ld2.minusYears(2);//在当前的日期上在减两年
System.out.println(ld3);//2017-02-19T11:19:59

LocalDateTime ld4 = ld2.minusMonths(2);//在当前的日期上在减两个月
System.out.println(ld4);//2018-12-19T11:19:59

LocalDateTime ld5 = ld2.minusWeeks(2);//在当前的日期上在减两周
System.out.println(ld5);//2019-02-05T11:19:59

LocalDateTime ld6 = ld2.minusDays(2);//在当前的日期上在减两天
System.out.println(ld6);//2019-02-17T11:19:59

LocalDateTime ld7 = ld2.minusHours(2);//在当前的日期上在减两个小时
System.out.println(ld7);//2019-02-19T09:19:59

LocalDateTime ld8 = ld2.minusMinutes(2);//在当前的日期上在减两分钟
System.out.println(ld8);//2019-02-19T11:17:59

LocalDateTime ld9 = ld2.minusSeconds(2);//在当前的日期上在减两秒
System.out.println(ld9);//2019-02-19T11:19:57

LocalDateTime ld10 = ld2.minusNanos(2);//在当前的日期上在减两纳秒
System.out.println(ld10);//2019-02-19T11:19:58.999999998
}

3.格式化时间

public void test() {
//DateTimeFormatter.ISO_LOCAL_DATE_TIME   ISO日期格式化程序格式化或解析没有偏移量的日期时间,例如“2011-12-03T10:15:30”。
//DateTimeFormatter.ISO_LOCAL_DATE          ISO日期格式化程序格式化或解析没有偏移量的日期,如“2011-12-03”。
//DateTimeFormatter.ISO_LOCAL_TIME          ISO时间格式化程序格式化或解析一个没有偏移量的时间,例如“10:15”或“10:15:30”。
LocalDateTime ldt = LocalDateTime.now();
DateTimeFormatter dtf2 = DateTimeFormatter.ISO_LOCAL_DATE_TIME;
String str = ldt.format(dtf2);
System.out.println(str);

String str2 = ldt.format(DateTimeFormatter.ISO_LOCAL_DATE);
System.out.println(str2);

String str3 = ldt.format(DateTimeFormatter.ISO_LOCAL_TIME);
System.out.println(str3);

System.out.println("-----------------------------------------");
//DateTimeFormatter.ISO_DATE_TIME   类似ISO的日期格式化程序,用于格式化或解析具有偏移量和区域(如果有的话)的日期时间,如“2011-12-03T10:15:30”,“2011-12-03T10:15:30 + 01” :00'或'2011-12-03T10:15:30 + 01:00 [欧洲/巴黎]'。
//DateTimeFormatter.ISO_DATE        ISO日期格式化程序格式化或解析具有偏移量的日期(如可用),如“2011-12-03”或“2011-12-03 + 01:00”。 
//DateTimeFormatter.ISO_TIME        格式化或解析时间的ISO时间格式化程序,如果可用的偏移量,如“10:15”,“10:15:30”或“10:15:30 + 01:00”。 
String str4 = ldt.format(DateTimeFormatter.ISO_DATE_TIME);
System.out.println(str4);

String str5 = ldt.format(DateTimeFormatter.ISO_DATE);
System.out.println(str5);

String str6 = ldt.format(DateTimeFormatter.ISO_TIME);
System.out.println(str6);}

标签:转换,System,ld2,ISO,LocalDateTime,println,java8,out
来源: https://www.cnblogs.com/yuangyuan/p/16449561.html