看看代码吧~
从字符串类型到本地日期
localdatebegindatetime=local date.parse (begindate,datetimeformatter.ofpattern )“yyyy-mm-DD”);
从日期类型到本地日期
date dates=newsimpledateformat (" yyy mm " ).parse ) cycle );
Instant instant=dates.toInstant (;
zoneid zoneid=zoneid.system default (;
localdatelocaldate=instant.at zone (zoneid ).toLocalDate );
补充知识: LocalDateTime与字符串交互/Date交互/LocalDate交互/指定日期/时间比较/循环
在Java 8中表示日期和时间的类有多个,主要有:
Instant :表示时刻,不直接对应年月日信息,需要在时区进行变换
LocalDateTime:表示与时区无关的日期和时间信息,不直接对应于时间,必须在时区中进行转换
LocalDate :表示与时区无关的日期,与LocalDateTime相比,只有日期信息而没有时间信息
LocalTime :表示与时区无关的时间,与LocalDateTime相比,只有时间信息,没有日期信息
区域日期:表示特定时区的日期和时间
区域id /区域偏移:表示时区
与字符串的相互转换
简单粗暴
datetimeformatterdf=datetime formatter.of pattern (yyyy-mm-ddhh : mm : ss );
localdatetimetime=local datetime.now (;
字符串本地时间=df.format (time;
localdatetimeldt=local datetime.parse (2018-06-0110336012336005 ',df );
system.out.println (本地日期转换为字符串类型的时间: ' localTime );
system.out.println (将字符串类型的时间设置为本地日期: ' ldt );
与Date相互旋转
Java.util.datedate=new Java.util.date (;
Instant instant=date.toInstant (;
zoneid zone=zoneid.system default (;
localdatetimelocaldatetime=local datetime.of instant (instant,zone );
localdatetimelocaldatetime=local datetime.now (
zoneid zone=zoneid.system default (;
即时=local datetime.at zone (zone ).toInstant );
Java.util.datedate=date.from (instant );
与本地日期相互旋转
localdatetimenow=local datetime.now (;
localdatelocaldate=now.tolocaldate (;
localdatelocaldate=local date.now (;
zoneid zone=zoneid.system default (;
instant instant=local date.atstartofday (.at zone (zone ).toInstant );
Java.util.datedate=date.from (instant );
配合时间
localdatetimenow=local datetime.now (;
//明天
localdatetimeplusdays=now.plus days (1;
//昨天
localdatetimeplusdays2=now.plus days (-1;
//还有时分等同样的情况
时间比较
localdatetimenow=local datetime.now (;
longepochmilli=now.at zone (zoneid.system default ().toInstant ().toEpochMilli ) );
然后比较long就可以了
默认时区为ZoneId.systemDefault (
//北京时区
zoneidbjzone=zoneid.of (GMT 08:00 ) )。
间隔的计算
使用Duration进行day、hour、minute、second等的计算
使用Period进行Year,Month的计算
duration duration=duration.between (本地日期,本地日期4 );
duration.toDays (;
duration.toHours (;
duration.toMinutes (;
period period2=period.between (local datetime.tolocaldate (,localDateTime4.toLocalDate ) );
period2.getYears (;
period2.getMonths (;
period2.toTotalMonths (;
判断是今天还是昨天
stringtime=' 2018-08-0911:20336045 ';
datetimeformatterdtf=datetime formatter.of pattern (uuu-mm-ddhh : mm : ss );
localdatetimelocaltime=local datetime.parse (time,dtf );
localdatetimestarttime=local date.now ).at time (0,0 );
localdatetimeendtime=local date.now (.at time (23,59,59 ) );
localdatetimestartyesterday=local date.now (.plus days (-1 ).attime ) 0,0,0 );
localdatetimeendyesterday=local date.now (.plus days (-1 ).attime ) 23、59、59 );
//小于昨天的开始日期时
if (local time.is before (开始yesterday ) ) }
System.out.println (时间过去);
}
//时间是昨天
if (local time.is after (开始yesterday ) local time.is before (end yesterday ) ) {
System.out.println (时间为昨天);
}
//如果大于今天的开始日期,则小于今天的结束日期
if (local time.is after (开始时间) localtime.isbefore (结束时间) ) }{
System.out.println (时间为今天);
}
//如果大于今天的结束日期
if (本地时间. is after (结束时间) ) }
System.out.println (时间是未来);
}
}
循环一定期间
localdatestart=local date.of 652019、4、29;
localdateend=local date.of (2019、7、29 );
do {
system.out.println(start );
start=start.plusdays(1;
} while (start.toepochday (=end.toepochday ) );
获取最近7天的每日开始时间戳和结束时间戳
localdatestart=local date.now (.plus days (-7 ) );
本地date end=local date.now (;
do {
start.Atstartofday(.atzone ) zoneid.systemdefault ) ).toInstant ).toEpochMilli );
start.attime(localtime.max ).at zone (zoneid.system default ) ) )
. toInstant ().toEpochMilli );
start=start.plusdays(1;
} while (start.toepochday (=end.toepochday ) );
以上字符串类型是localDate,date是转换为localDate的实现代码与编辑共享的所有内容。 希望您能参考。 另外,我希望你能多支持脚本屋。