工作中java常用的时间工具类:Calendar

/**

* 根据传参求出对应月份的最后一天

*/

@Test

public void setAndGetRangeEndTime() {

int index = 1;

//int range=2;

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

Calendar calendar = Calendar.getInstance();

calendar.setTime(new Date());

//昨天

calendar.set(Calendar.DATE, calendar.get(Calendar.DATE) - 1);

calendar.set(Calendar.HOUR_OF_DAY, 23);

calendar.set(Calendar.MINUTE, 59);

calendar.set(Calendar.SECOND, 59);

//月份

calendar.set(Calendar.MONTH, calendar.get(Calendar.MONTH) - index);

//月份最大天数

int maxDay = calendar.getActualMaximum(Calendar.DAY_OF_MONTH);

calendar.set(Calendar.DAY_OF_MONTH, maxDay);

String format = sdf.format(calendar.getTime());

System.out.println("结果:" + format);

}

/**

* 补全开始到结束时间的工具方法

*/

public List<String> testDateUtils(String startTime, String endTime) throws Exception {

startTime = "2021-02-03";

endTime = "2021-02-06";

if (StringUtils.isEmpty(startTime) || StringUtils.isEmpty(endTime)) {

throw new Exception("开始日期和截止日期都不能为空!");

}

//compareTo 当两者相等时为0,当前者小于后者时返回-1,大于时返回1。具体查看源码。

if (startTime.compareTo(endTime) > 0) {

throw new Exception("开始日期必须小于等于截止日期!");

}

SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");

Date startDate = simpleDateFormat.parse(startTime);

Date endDate = simpleDateFormat.parse(endTime);

Calendar startCal = Calendar.getInstance();

Calendar endCal = Calendar.getInstance();

startCal.setTime(startDate);

endCal.setTime(endDate);

List<String> days = new ArrayList<>();

//当开始时间大于结束时间时则返回

while (startCal.compareTo(endCal) <= 0) {

days.add(simpleDateFormat.format(startCal.getTime()));

//Date本身加减日期过于麻烦,使用Calendar操纵日期;开始时间+1;

startCal.add(Calendar.DATE, 1);

}

return days;

}

#工作##面试##java#
技术 文章被收录于专栏

不秃头

全部评论
多谢佬的分享!
点赞 回复 分享
发布于 2023-03-06 11:24 湖北
先马住慢慢看
点赞 回复 分享
发布于 2023-03-06 11:36 湖南

相关推荐

云边有个小卖铺儿:校招生违约率低,所以我要高😂
点赞 评论 收藏
分享
牛客604067584号:我9月初投递10月入池,泡到现在。hr全部离职,当然没离职的时候也联系不上。我发邮件给campus也不回我
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务