Java8的LacalDateTime与Calendar

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 - 博客园

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值