ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

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

2022-07-18 09:04:45  阅读:211  来源: 互联网

标签:转换 System ld2 ISO LocalDateTime println java8 out


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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有