参考文章:
Java中的时间和日期(下)
stackoverflow
今天在上面的博客中学到了java8的LocalDate类,之前的一个项目中有需求要通过时间返回日期,星期,而且月份和星期都要是英文,有的时候还要求是缩写,现在看来用这个类实在是太适合不过了。
但是之前的项目中,数据库存放的都是Date.getTime()
这样的毫秒数,在网上搜索了一番之后,发现可以将Date转换承LocalDate对象:
Date input = new Date();
LocalDate date = input.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
所以直接一个方法就搞定了:
public static LocalDate ConvertDateToLocalDate(Date date) {
return date.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
}
随便来几行代码感受一下:
LocalDate date = LocalDate.now();
System.out.println("LocalDate.now:"+date);
System.out.println("当前月份:"+date.getMonth());
//加减天,月,年,周
System.out.println("当前日期加三十天:"+date.plusDays(30));
System.out.println("当前日期减去30天:"+date.minusDays(30));
System.out.println("当前日期是星期几:"+date.getDayOfWeek());
System.out.println("当前日期是星期几的缩写:"
+date.getDayOfWeek().getDisplayName(TextStyle.SHORT, Locale.ENGLISH));
System.out.println("当前年份:"+date.getYear());
//LocalDate和Date的转换
System.out.println("LocalDate和Date的相互转换:" +ConvertDateToLocalDate(new Date()));
输出结果:
LocalDate.now:2016-11-29
当前月份:NOVEMBER
当前日期加三十天:2016-12-29
当前日期减去30天:2016-10-30
当前日期是星期几:TUESDAY
当前日期是星期几的缩写:Tue
当前年份:2016
LocalDate和Date的相互转换:2016-11-29