对两个时间求差值,以及计算时间段内周六、周日的天数

这篇博客提供了一个Java工具类`DateUtil`,用于计算两个日期之间的天数差以及该时间段内的周六和周日数量。通过`getMinusResultByDate`方法可以获取天数差,而`getWeekendByDates`方法则能计算周末天数。示例代码中还展示了如何增加日期的月份。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

以下代码可直接调用使用,已通过测试

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

/**
 * 日期处理工具类
 * */
public class DateUtil {
  /**
   * 计算时间段内的天数差,首尾当天都计入结果中
   * */
  public static int getMinusResultByDate(String startDateStr,String endDateStr) {
	  int result = 0 ;
	  if(endDateStr == null || startDateStr == null ){
		  result = 0 ;
	  }
	  else {
		  SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
		  try {
			  Date startDate = format.parse(startDateStr);
			  Date endDate = format.parse(endDateStr);
			  
			  Calendar startCld = Calendar.getInstance();
			  startCld.setTime(startDate);
			  
			  Calendar endCld = Calendar.getInstance();
			  endCld.setTime(endDate);
			  result = endCld.get(Calendar.DAY_OF_YEAR) - startCld.get(Calendar.DAY_OF_YEAR) + 1; 
		  } catch (ParseException e) {
			  e.printStackTrace();
		  }
	  }
	  retu
### 计算两个 `LocalDateTime` 对象间的月数和天数差异 为了计算两个 `LocalDateTime` 对象间相差的月数和天数,在 Java 中可以利用 `java.time.temporal.ChronoUnit` 和其他辅助方法来实现这一目标。 对于月份数量的计算,可以通过获取两个日期各自的年份和月份部分并做相应处理。下面是一个基于给定函数框架的方法: ```java import java.time.LocalDateTime; import java.time.temporal.ChronoUnit; public class DateDifference { public static long monthsBetween(LocalDateTime start, LocalDateTime end) { return ChronoUnit.MONTHS.between(start.withDayOfMonth(1), end.withDayOfMonth(1)); } } ``` 此代码片段通过调整起始和结束日期到各自月份的第一天再进行比较,从而得到较为精确的整个月份数[^2]。 至于天数上的差距,则可以直接调用 `ChronoUnit.DAYS.between()` 方法来进行简单而有效的运: ```java import java.time.LocalDateTime; import java.time.temporal.ChronoUnit; public class DateDifference { public static long daysBetween(LocalDateTime start, LocalDateTime end) { return ChronoUnit.DAYS.between(start, end); } } ``` 上述两段代码分别实现了计算两个月份以及两天之间的具体差值功能[^3]。需要注意的是当涉及到跨越不同长度月份的情况时,先单独考虑完整的月份数目变化,然后再针对剩余的日历日作进一步分析会更加合理[^5]。 综合以上两种情况,如果希望同时获得两者的结果,可将它们组合在一个返回结构体或数组中以便于后续使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值