String类型转localDate,date转localDate的实现代码
看代码吧~
String类型转localDate
LocalDatebeginDateTime=LocalDate.parse(beginDate,DateTimeFormatter.ofPattern(“yyyy-MM-dd”));
date类型转localDate
Datedates=newSimpleDateFormat(“yyyyMM”).parse(cycle); Instantinstant=dates.toInstant(); ZoneIdzoneId=ZoneId.systemDefault(); LocalDatelocalDate=instant.atZone(zoneId).toLocalDate();
补充知识:LocalDateTime与字符串互转/Date互转/LocalDate互转/指定日期/时间比较/循环
Java8中表示日期和时间的类有多个,主要的有:
Instant:表示时刻,不直接对应年月日信息,需要通过时区转换
LocalDateTime:表示与时区无关的日期和时间信息,不直接对应时刻,需要通过时区转换
LocalDate:表示与时区无关的日期,与LocalDateTime相比,只有日期信息,没有时间信息
LocalTime:表示与时区无关的时间,与LocalDateTime相比,只有时间信息,没有日期信息
ZonedDateTime:表示特定时区的日期和时间
ZoneId/ZoneOffset:表示时区
与字符串互转
简单粗暴
DateTimeFormatterdf=DateTimeFormatter.ofPattern("yyyy-MM-ddHH:mm:ss"); LocalDateTimetime=LocalDateTime.now(); StringlocalTime=df.format(time); LocalDateTimeldt=LocalDateTime.parse("2018-06-0110:12:05",df); System.out.println("LocalDateTime转成String类型的时间:"+localTime); System.out.println("String类型的时间转成LocalDateTime:"+ldt);
与Date互转
java.util.Datedate=newjava.util.Date(); Instantinstant=date.toInstant(); ZoneIdzone=ZoneId.systemDefault(); LocalDateTimelocalDateTime=LocalDateTime.ofInstant(instant,zone);
LocalDateTimelocalDateTime=LocalDateTime.now(); ZoneIdzone=ZoneId.systemDefault(); Instantinstant=localDateTime.atZone(zone).toInstant(); java.util.Datedate=Date.from(instant);
与LocalDate互转
LocalDateTimenow=LocalDateTime.now();
LocalDatelocalDate=now.toLocalDate();
LocalDatelocalDate=LocalDate.now(); ZoneIdzone=ZoneId.systemDefault(); Instantinstant=localDate.atStartOfDay().atZone(zone).toInstant(); java.util.Datedate=Date.from(instant);
调整时间
LocalDateTimenow=LocalDateTime.now(); //明天 LocalDateTimeplusDays=now.plusDays(1); //昨天 LocalDateTimeplusDays2=now.plusDays(-1); //还有时分等同理
时间比较
LocalDateTimenow=LocalDateTime.now();
LongepochMilli=now.atZone(ZoneId.systemDefault()).toInstant().toEpochMilli();
然后比较long就可以了
默认时区是ZoneId.systemDefault()
//北京时区
ZoneIdbjZone=ZoneId.of("GMT+08:00")
间隔计算
使用Duration进行day,hour,minute,second等的计算
使用Period进行Year,Month的计算
Durationduration=Duration.between(localDateTime,localDateTime4); duration.toDays(); duration.toHours(); duration.toMinutes(); Periodperiod2=Period.between(localDateTime.toLocalDate(),localDateTime4.toLocalDate()); period2.getYears(); period2.getMonths(); period2.toTotalMonths();
判断是否是今天或昨天
Stringtime="2018-08-0911:20:45"; DateTimeFormatterdtf=DateTimeFormatter.ofPattern("uuuu-MM-ddHH:mm:ss"); LocalDateTimelocalTime=LocalDateTime.parse(time,dtf); LocalDateTimestartTime=LocalDate.now().atTime(0,0,0); LocalDateTimeendTime=LocalDate.now().atTime(23,59,59); LocalDateTimestartYesterday=LocalDate.now().plusDays(-1).atTime(0,0,0); LocalDateTimeendYesterday=LocalDate.now().plusDays(-1).atTime(23,59,59); //如果小于昨天的开始日期 if(localTime.isBefore(startYesterday)){ System.out.println("时间是过去"); } //时间是昨天 if(localTime.isAfter(startYesterday)&&localTime.isBefore(endYesterday)){ System.out.println("时间是昨天"); } //如果大于今天的开始日期,小于今天的结束日期 if(localTime.isAfter(startTime)&&localTime.isBefore(endTime)){ System.out.println("时间是今天"); } //如果大于今天的结束日期 if(localTime.isAfter(endTime)){ System.out.println("时间是未来"); } }
循环某段时间
LocalDatestart=LocalDate.of(2019,4,29); LocalDateend=LocalDate.of(2019,7,29); do{ System.out.println(start); start=start.plusDays(1); }while(start.toEpochDay()<=end.toEpochDay());
获取最近7天每天开始和结束时间戳
LocalDatestart=LocalDate.now().plusDays(-7); LocalDateend=LocalDate.now(); do{ start.atStartOfDay().atZone(ZoneId.systemDefault()).toInstant().toEpochMilli(); start.atTime(LocalTime.MAX).atZone(ZoneId.systemDefault()) .toInstant().toEpochMilli(); start=start.plusDays(1); }while(start.toEpochDay()<=end.toEpochDay());
以上这篇String类型转localDate,date转localDate的实现代码就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。