1.转Date
1 private LocalDate UDateToLocalDate(Date date) {
2 if (date == null) return null;
3 Instant instant = date.toInstant();
4 ZoneId zone = ZoneId.systemDefault(); //默认系统时区
5 LocalDateTime localDateTime = LocalDateTime.ofInstant(instant, zone);
6 return localDateTime.toLocalDate();
7 }
2.转String now.toString()
3.一般用法 //当前时间 yyyy-MM-dd LocalDate now = LocalDate.now(); //根据制定的年月日生成LocalDate LocalDate.of(2017,09,20); //-> 2017-09-20
4.String转LocalDate //其中的字符串必须严格遵守yyyy-MM-dd格式,且不能是错误的时间
LocalDate.parse("2017-09-17");
也可以自己自定义格式
parse(CharSequence text, DateTimeFormatter formatter) //formatter自定义的格式
5.取相关的日期 1.取本月的某一天: //第一天
LocalDate firstDayOfThisMonth = today.with(TemporalAdjusters.firstDayOfMonth());
也可以使用today.withDayOfManth(int dayOfManth),参数为所求的某一天的,比如,求本月的第一天就写1 //最后一天 取最后一天,由于可能出现错误的日期,比如30天,可是参数写了31,会出现DateTimeException,因此写TemporalAdjusters.firstDayOfMonth() 参数更合适 //明天或者昨天 today.playDays(1)。 today.minusDays(1)
6.取具体时间
LocalTime.now() 输出17:06:00.005 构造具体时间
LocalTime localTime = LocalTime.of(12, 12, 12); // 12:12:12
LocalTime localTime1 = LocalTime.parse("12:00:00"); //有字符串解析为LocalTime
说明 相应的,有一个叫LocalDateTime的类,用法差不多,但是输出虽然会把LocalDate和LocalTime一起输出,但是 中间会加一个时区标识符 2017-09-28T17:07:52.906
7.时间比较
isAfter(),判断时间是否在另一时间之后
//引自Java8源码
LocalDate a = LocalDate.of(2012, 6, 30);
LocalDate b = LocalDate.of(2012, 7, 1);
a.isAfter(b) == false
a.isAfter(a) == false
b.isAfter(a) == true
相应的isBefore(),判断时间在另一时间之前
//引自java8源码
LocalDate a = LocalDate.of(2012, 6, 30);
LocalDate b = LocalDate.of(2012, 7, 1);
a.isBefore(b) == true
a.isBefore(a) == false
b.isBefore(a) == false
还有一个isEquals()。内部使用的是compareTo0() 方法,采用的是先比较年,然后月,然后日
//引自java8源码
int compareTo0(LocalDate otherDate) {
int cmp = (year - otherDate.year);
if (cmp == 0) {
cmp = (month - otherDate.month);
if (cmp == 0) {
cmp = (day - otherDate.day);
}
}
return cmp;
}