1.目的
得到一个需求
传2022-01,能够根据这个时间,得到此时间的开始时间2022-01-01 00:00:00和结束时间2022-01-31 23:59:59
因此开发了此功能,根据年、年月、年月日,年月日时,年月日时分等等能够得到开始或结束时间
2.思路
利用重载方法和LocalDataTime的方式,能够的得到所需时间。写法简单,使用方便
3.代码
/**
* 获取时间
*
* @param year 年
* @param month 月
* @param day 日
* @param hour 时
* @param minute 分
* @param second 秒
* @return yyyy-MM-dd HH:mm:ss时间
*/
public static Date getTime(int year, int month, int day, int hour, int minute, int second) {
LocalDateTime localDateTime = LocalDateTime.of(year, month, day, hour, minute, second);
ZonedDateTime zonedDateTime = localDateTime.atZone(ZoneId.of("Asia/Shanghai"));
return Date.from(zonedDateTime.toInstant());
}
/**
* 获取开始时间
*
* @param year 年
* @param month 月
* @param day 日
* @param hour 时
* @param minute 分
* @return yyyy-MM-dd HH:mm:ss时间
*/
public static Date getBeginTime(int year, int month, int day, int hour, int minute) {
return getTime(year, month, day, hour, minute, 0);
}
/**
* 获取开始时间
*
* @param year 年
* @param month 月
* @param day 日
* @param hour 时
* @return yyyy-MM-dd HH:mm:ss时间
*/
public static Date getBeginTime(int year, int month, int day, int hour) {
return getBeginTime(year, month, day, hour, 0);
}
/**
* 获取开始时间
*
* @param year 年
* @param month 月
* @param day 日
* @return yyyy-MM-dd HH:mm:ss时间
*/
public static Date getBeginTime(int year, int month, int day) {
return getBeginTime(year, month, day, 0);
}
/**
* 获取开始时间
*
* @param year 年
* @param month 月
* @return yyyy-MM-dd HH:mm:ss时间
*/
public static Date getBeginTime(int year, int month) {
return getBeginTime(year, month, 1);
}
/**
* 获取开始时间
*
* @param year 年
* @return yyyy-MM-dd HH:mm:ss时间
*/
public static Date getBeginTime(int year) {
return getBeginTime(year, 1);
}
/**
* 获取结束时间
*
* @param year 年
* @param month 月
* @param day 日
* @param hour 时
* @param minute 分
* @return yyyy-MM-dd HH:mm:ss时间
*/
public static Date getEndTime(int year, int month, int day, int hour, int minute) {
return getTime(year, month, day, hour, minute, 59);
}
/**
* 获取结束时间
*
* @param year 年
* @param month 月
* @param day 日
* @param hour 时
* @return yyyy-MM-dd HH:mm:ss时间
*/
public static Date getEndTime(int year, int month, int day, int hour) {
return getEndTime(year, month, day, hour, 59);
}
/**
* 获取结束时间
*
* @param year 年
* @param month 月
* @param day 日
* @return yyyy-MM-dd HH:mm:ss时间
*/
public static Date getEndTime(int year, int month, int day) {
return getEndTime(year, month, day, 23);
}
/**
* 获取结束时间
*
* @param year 年
* @param month 月
* @return yyyy-MM-dd HH:mm:ss时间
*/
public static Date getEndTime(int year, int month) {
int day = getLastDayOfMonth(year, month);
return getEndTime(year, month, day);
}
/**
* 获取结束时间
*
* @param year 年
* @return yyyy-MM-dd HH:mm:ss时间
*/
public static Date getEndTime(int year) {
return getEndTime(year, 12);
}
/**
* 获取一个月的最后一天
*
* @param year 年
* @param month 月
* @return 一个月的最后一天的数值
*/
public static int getLastDayOfMonth(int year, int month) {
Calendar cal = Calendar.getInstance();
//设置年份
cal.set(Calendar.YEAR, year);
//设置月份
cal.set(Calendar.MONTH, month - 1);
//获取某月最大天数
return cal.getActualMaximum(Calendar.DAY_OF_MONTH);
}
4.测试
public static void main(String[] args) {
System.out.println(getBeginTime(2022));
System.out.println(getBeginTime(2022, 5));
System.out.println(getBeginTime(2022, 5, 15));
System.out.println(getBeginTime(2022, 5, 15, 15));
System.out.println(getBeginTime(2022, 5, 15, 15, 15));
System.out.println("----------------------------------------------------------------");
System.out.println(getEndTime(2022));
System.out.println(getEndTime(2022, 5));
System.out.println(getEndTime(2022, 5, 15));
System.out.println(getEndTime(2022, 5, 15, 15));
System.out.println(getEndTime(2022, 5, 15, 15, 15));
System.out.println("----------------------------------------------------------------");
System.out.println(getTime(2022, 5, 15, 15, 15, 15));
}
5.结果
Sat Jan 01 00:00:00 CST 2022
Sun May 01 00:00:00 CST 2022
Sun May 15 00:00:00 CST 2022
Sun May 15 15:00:00 CST 2022
Sun May 15 15:15:00 CST 2022
----------------------------------------------------------------
Sat Dec 31 23:59:59 CST 2022
Tue May 31 23:59:59 CST 2022
Sun May 15 23:59:59 CST 2022
Sun May 15 15:59:59 CST 2022
Sun May 15 15:15:59 CST 2022
----------------------------------------------------------------
Sun May 15 15:15:15 CST 2022
6.总结
1.最底层获取时间的方法是getTime方法,能够获取年月日时分秒的时间,最后转成Date
2.重载方法getBeginTime,是获取开始时间
3.重载方法getEndTime,是获取结束时间