LocalDateTime是java8新的功能,新特性,Calendar日历类
LocalDateTime是java8新的功能,新特性,Calendar日历类
//localDateTime转换为date
public static Date turnToDate(LocalDateTime localDateTime){
ZoneId zone = ZoneId.systemDefault();
Instant instant = localDateTime.atZone(zone).toInstant();
return Date.from(instant);
}
//date转换为localDateTime
public static LocalDateTime turnToLocalDateTime(Date date){
Instant instant = date.toInstant();
ZoneId zone = ZoneId.systemDefault();
return LocalDateTime.ofInstant(instant, zone);
}
//LocalDate与String互转
DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
LocalDateTime time = LocalDateTime.now();
String localTime = df.format(time);
LocalDateTime ldt = LocalDateTime.parse("2019-04-11 15:07:05",df);
System.out.println("LocalDateTime转成String类型的时间:"+localTime);
System.out.println("String类型的时间转成LocalDateTime:"+ldt);
LocalDateTime与Calendar的比较
计算时间差不同的方法
//使用LocalDateTime计算天数,小时数等
public static void main (String arg[]) {
LocalDateTime now = LocalDateTime.now();
System.out.println("计算两个时间的差:");
LocalDateTime end = LocalDateTime.now();
Duration duration = Duration.between(now, end);
long days = duration.toDays(); //相差的天数
long hours = duration.toHours();//相差的小时数
long minutes = duration.toMinutes();//相差的分钟数
long millis = duration.toMillis();//相差毫秒数
long nanos = duration.toNanos();//相差的纳秒数
System.out.println(now);
System.out.println(end);
}
//calendar
Calendar a = Calendar.getInstance();
Calendar b = Calendar.getInstance();
a.setTime(date1);
b.setTime(date2);
long time1 = a.getTimeInMillis();//毫秒
long time2 = b.getTimeInMillis();//毫秒
long between = (time2 -time1) /1000*3600*24;
//calendar需要转换为毫秒来进行计算ation.toMinutes();//相差的分钟数
long millis = duration.toMillis();//相差毫秒数
long nanos = duration.toNanos();//相差的纳秒数
System.out.println(now);
System.out.println(end);
}
获取前几天或后几天的日期
//calendar
System.out.println(a.getTime());//2019/04/11 15:04
a.add(Calendar.DAY_OF_MONTH,- 3); //前几天
a.add(Calendar.DAY_OF_MONTH, +3); //后几天
a.add(Calendar.HOUR,-1); //前一个小时
a.add(Calendar.YEAR,-1);//前一年
a.add(Calendar.MONTH,-1);//前一个月
System.out.println(a.getTime()); //2018/03/11 14:04
//localdatetime
now.plusDays(1);//增加一天
now.plusMonths(1);//月
now.plusWeeks(1);//星期
now.plusHours(1);//小时
now.plusMinutes(2);// 分钟
now.plusYears(1); //年
now.minusDays(1);//减去一天
比较时间的大小
//Date
public static int date(Date date1,Date date2){
if (date1.getTime() > date2.getTime()) {
return 1;
} else if (date1.getTime() < date1.getTime()) {
return -1;
} else {
return 0;
}
}
//localdate
now.isAfter(end);//now是否在end之后
now.isBefore(end);//在end之前
now.isEqual(end);//相等
System.out.println(now.isBefore(end));
遍历日期
//calendar
Calendar calendar = Calendar.getInstance();
calendar.setTime(date1);
while (calendar.getTime().before(date2)){
String str = TimeUtil.isDay(calendar.getTime());
System.out.println(str);
calendar.add(Calendar.DAY_OF_MONTH,+1);
}
//localDate
long duration = ChronoUnit.DAYS.between(startdate,enddate);
List<String> localDates = new ArrayList<>();
for (int i=0;i<duration;i++){
DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
String time = dateTimeFormatter.format(startdate);
localDates.add(time);
startdate = startdate.plusDays(1);
}
joda用起来也很方便,但是joda不属于jdk中的,是一个面向于java的开源时间/日期库,所以可以直接使用jdk8中自带的localDateTime,原来jdk中没有封装比较好用的时间工具类,可以使用joda
joda就不做介绍了,
jodaTime https://www.cnblogs.com/wihainan/p/5999771.html
joda就不做介绍了,
jodaTime Joda-Time 学习笔记 - yweihainan - 博客园