LocalDate和Date的互换,以及LocalDate的使用

本文介绍了在项目中如何利用Joda-Time库进行LocalDate和Date之间的转换,以及LocalDate的便捷操作。在统计时间段内用户数量时,使用LocalDate可以避免处理日期跨月或跨年的复杂逻辑,简化代码实现。
摘要由CSDN通过智能技术生成

   今天在做项目的时候,遇到一个需求,统计时间段内用户的数量(包括关注的用户/取消关注的用户/净增长的用户/总用户数量等),我当时考虑到计算两个时间段的天数差,然后循环对每一天分别做统计,我想循环的时候需要考虑加一天之后到了下一个月或者是下一年,都需要判断的。我使用的计算时间段内的天数的方法是:

   Date startDate = new Date(Long.valueOf(startTime));
   Date endDate = new Date(Long.valueOf(endTime));
   int count = (int)((endDate.getTime() - startDate.getTime()) / (1000 * 60 * 60 * 24));

       传递的参数开始时间和结束时间都是String类型的。后来一个老员工审查我的code的时候告诉我使用org.joda.time是best practice(最佳实践),使用org.joda.time不需要考虑加一天之后会变成下一年或者下一个月。它帮我们做了。

   //需要导的包
   import org.joda.time.Days;
   import org.joda.time.LocalDate;

   LocalDate startLocalDate = LocalDateUtil.getLocalDate(startTime);
   LocalDate endLocalDate = LocalDateUtil.getLocalDate(endTime);
   int days = Days.daysBetween(startLocalDate, endLocalDate).getDays();
   //还可以使用org.joda.time.Period来完成天数的计算,之后我会补充

      以下是一些常用的封装的LocalDate的方法:

   //String类型的时间撮转LocalDate
   public static LocalDate getLocalDate(String dateStr) {
       LocalDate localDate = null;
       if (StringUtils.hasText(dateStr)) {
           localDate = new LocalDate(Long.valueOf(dateStr));
       } else {
           localDate = new LocalDate();
       }
       return localDate;
   }
   //long类型的时间撮转LocalDate  
  
  • 2
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值