日期工具类Calendar
package util;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Locale;
public class DateUtil3 {
public static final String YYYYMMDD = "yyyyMMdd";
public static final String YYYY_MM_DD = "yyyy-MM-dd";
public static final String YYYYMMDDHHMMSS = "yyyyMMddHHmmss";
public static final String YYYY_MM_DD_HH_MM_SS = "yyyy-MM-dd HH:mm:ss";
/**
* 将指定格式的字符串化为时间格式.
*
* @param dateStr 时间字符串
* @param pattern 指定格式
* @return 转换后的时间
*/
public static Date strToDate(String dateStr, String pattern) {
final SimpleDateFormat dateFormat = new SimpleDateFormat(pattern);
try {
final Date datetime = dateFormat.parse(dateStr);
final Calendar cal = Calendar.getInstance();
cal.setTime(datetime);
return cal.getTime();
} catch (ParseException e) {
e.printStackTrace();
}
return null;
}
/**
* 将时间格式化为指定格式的字符串.
*
* @param date 指定时间
* @param pattern 时间格式
* @return 转换后的时间字符串
*/
public static String dateToStr(Date date, String pattern) {
final SimpleDateFormat sdf = new SimpleDateFormat(pattern);
return sdf.format(date);
}
/**
* 获取今天 0点时间
*/
public static Date getTodayZero() {
Calendar calendar = Calendar.getInstance();
// 获取 0 点的时间
calendar.set(Calendar.HOUR_OF_DAY, 0);
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.SECOND, 0);
calendar.set(Calendar.MILLISECOND, 0);
return calendar.getTime();
}
/**
* 获取今天 23:59:59点时间
*/
public static Date getTodayLast() {
Calendar calendar = Calendar.getInstance();
// 获取 23:59:59 点的时间
calendar.set(Calendar.HOUR_OF_DAY, 23);
calendar.set(Calendar.MINUTE, 59);
calendar.set(Calendar.SECOND, 59);
calendar.set(Calendar.MILLISECOND, 999);
return calendar.getTime();
}
/**
* 加指定的月.
*
* @param date 时间
* @param month 需要计算增加的月
* @return 计算后的日期
*/
public static Date addMonth(Date date, int month) {
Calendar cal = Calendar.getInstance();
cal.setTime(date);
cal.add(Calendar.MONTH, month);
return cal.getTime();
}
/**
* 加指定的周.
*
* @param date 时间
* @param week 需要计算增加的周.
* @return 计算后的日期
*/
public static Date addWeek(Date date, int week) {
Calendar cal = Calendar.getInstance();
cal.setTime(date);
cal.add(Calendar.WEEK_OF_YEAR, week);
return cal.getTime();
}
/**
* 加指定的天数.
*
* @param date 时间
* @param day 需要增加的天数
* @return 计算后的日期
*/
public static Date addDay(Date date, int day) {
Calendar cal = Calendar.getInstance();
cal.setTime(date);
cal.add(Calendar.DATE, day);
return cal.getTime();
}
/**
* 加指定的小时.
*
* @param date 时间
* @param hour 需要增加的小时
* @return 计算后的日期
*/
public static Date addHour(Date date, int hour) {
Calendar cal = Calendar.getInstance();
cal.setTime(date);
cal.add(Calendar.HOUR, hour);
return cal.getTime();
}
/**
* 加指定的分钟.
*
* @param date 时间
* @param minute 需要增加的分钟
* @return 计算后的日期
*/
public static Date addMinute(Date date, int minute) {
Calendar cal = Calendar.getInstance();
cal.setTime(date);
cal.add(Calendar.MINUTE, minute);
return cal.getTime();
}
/**
* 加指定的秒
*
* @param date 时间
* @param second 需要增加的秒
* @return 计算后的日期
*/
public static Date addSecond(Date date, int second) {
Calendar cal = Calendar.getInstance();
cal.setTime(date);
cal.add(Calendar.SECOND, second);
return cal.getTime();
}
/**
* 获取周一 00:00:00:000
*/
public static Date weekMonday(Date date) {
Calendar calendar = Calendar.getInstance(Locale.CHINA);
calendar.setFirstDayOfWeek(Calendar.MONDAY); // 以周一为首日
calendar.setTime(date);
calendar.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY); // 周一
// 获取 0 点的时间
calendar.set(Calendar.HOUR_OF_DAY, 0);
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.SECOND, 0);
calendar.set(Calendar.MILLISECOND, 0);
return calendar.getTime();
}
/**
* 获取周日
*/
public static Date weekSunday(Date date) {
Calendar calendar = Calendar.getInstance(Locale.CHINA);
calendar.setFirstDayOfWeek(Calendar.MONDAY); // 以周一为首日
calendar.setTime(date);
calendar.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY); // 周日
// 获取 最后一秒 的时间
calendar.set(Calendar.HOUR_OF_DAY, 23);
calendar.set(Calendar.MINUTE, 59);
calendar.set(Calendar.SECOND, 59);
calendar.set(Calendar.MILLISECOND, 999);
return calendar.getTime();
}
/**
* 月份第一天 00:00:00
*/
public static Date monthFirstDay(Date date) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.set(Calendar.DATE, 1); // 设置为每月的第一天
// 获取 0 点的时间
calendar.set(Calendar.HOUR_OF_DAY, 0);
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.SECOND, 0);
calendar.set(Calendar.MILLISECOND, 0);
return calendar.getTime();
}
/**
* 月份最后一天
*/
public static Date monthLastDay(Date date) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.set(Calendar.DATE, calendar.getActualMaximum(Calendar.DATE));
// 获取 最后一秒 的时间
calendar.set(Calendar.HOUR_OF_DAY, 23);
calendar.set(Calendar.MINUTE, 59);
calendar.set(Calendar.SECOND, 59);
calendar.set(Calendar.MILLISECOND, 999);
return calendar.getTime();
}
/**
* 获取一周中的周几
* 1:周日 、2:周一 、 3:周二 、 4:周三 、5:周四、6:周五、 7:周六
*/
public static int dayOfWeek(Date date) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
return calendar.get(Calendar.DAY_OF_WEEK);
}
/**
* 获取年的第几周
* 周的第一天从周日开始
*/
public static int weekOfYear(Date date) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
return calendar.get(Calendar.WEEK_OF_YEAR);
}
}
不积跬步,无以至千里;不积小流,无以成江海。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性
· 全网最简单!3分钟用满血DeepSeek R1开发一款AI智能客服,零代码轻松接入微信、公众号、小程