Java 8 日期计算

日期处理一直是JDK之前版本的一个诟病,所以我们平时开发的时候会选择用其他的工具包例如joda-time来代替JDK自带的日期处理方式处理日期的相关问题。这次Java的设计者终于正视了这个问题,吸取了joda-time的精华,来优化之前的日期处理的繁琐,让我们在处理时间的时候更加方便。
下面我们来看看Java8是怎样计算日期的。

===============Java8之前==========
private static final DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");

    public static void main(String[] args) {
        Date currentDate = new Date();
        System.out.println(dateFormat.format(currentDate));
        Calendar c = Calendar.getInstance();
        c.setTime(currentDate);//将Date转换成Calendar 
        //操作日期
        c.add(Calendar.YEAR, 1);
        c.add(Calendar.MONTH, 1);
        c.add(Calendar.DATE, 1); //和 c.add(Calendar.DAY_OF_MONTH, 1);效果是一样的
        c.add(Calendar.HOUR, 1);
        c.add(Calendar.MINUTE, 1);
        c.add(Calendar.SECOND, 1);

        Date currentDatePlusOne = c.getTime();//将Calendar转换成Date
        System.out.println(dateFormat.format(currentDatePlusOne));
    }
输出:
2017/04/24 10:24:00
2018/05/25 11:25:01
===============Java8==========
    private static final String DATE_FORMAT = "yyyy/MM/dd HH:mm:ss";
    private static final DateFormat dateFormat = new SimpleDateFormat(DATE_FORMAT);
    private static final DateTimeFormatter dateFormat8 = DateTimeFormatter.ofPattern(DATE_FORMAT);
    public static void main(String[] args) {
        Date currentDate = new Date();
        System.out.println("date : " + dateFormat.format(currentDate));
        // 将date转换成 localdatetime
        LocalDateTime localDateTime = currentDate.toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime();
        System.out.println("localDateTime : " + dateFormat8.format(localDateTime));
        // 操作日期
        localDateTime = localDateTime.plusYears(1).plusMonths(1).plusDays(1);
        localDateTime = localDateTime.plusHours(1).plusMinutes(2).minusMinutes(1).plusSeconds(1);
        // 将LocalDateTime转换成date
        Date currentDatePlusOneDay = Date.from(localDateTime.atZone(ZoneId.systemDefault()).toInstant());
        System.out.println("Output : " + dateFormat.format(currentDatePlusOneDay));
    }
输出:
date : 2017/04/24 10:24:24
localDateTime : 2017/04/24 10:24:24
Output : 2018/05/25 11:25:25

个人觉得这样处理时间的话,确实要比之前的处理方式舒服不少。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值