日期格式工具类基础版006
对常用的日期转换,提供工具类,并通过深度剖析,进行工具类升级
在日常开发中,我们经常需要对日期时间与字符串之间的转换,现将通用方法进行工具类提取和剖析。
针对简单日期工具转换进行升级,实现简单的时间加减。
升级日期加减的方法
时间日期的处理,获取日期的周初、周末,月初、月末,年初、年末,日初、日末;
获取日期 所属年份的第几天、所属月份的第几天、所属周的第几天、所属年的第几周、所属年的第几月
上一篇:日期格式工具005——获取日期 所属年份的第几天、所属月份的第几天、所属周的第几天、所属年的第几周、所属年的第几月
日期之间的比较和验证
/**
* 日期合法性校验
* @param dateStr 需要校验的日期字符串,格式可以是yyyy-MM-dd、yyyy/MM/dd、yyyyMMdd
* @return true-合法;false-不合法
*/
public static boolean isValidDate(String dateStr) {
String matchPattern = "^((\\d{2}(([02468][048])|([13579][26]))"
+ "[\\-\\/\\s]?((((0?[13578])|(1[02]))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|"
+ "(3[01])))|(((0?[469])|(11))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(30)))|(0?2[\\-\\/\\s]?"
+ "((0?[1-9])|([1-2][0-9])))))|(\\d{2}(([02468][1235679])|([13579][01345789]))[\\-\\/\\s]?("
+ "(((0?[13578])|(1[02]))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(3[01])))|(((0?[469])|(11))[\\-\\/\\s]?"
+ "((0?[1-9])|([1-2][0-9])|(30)))|(0?2[\\-\\/\\s]?((0?[1-9])|(1[0-9])|(2[0-8]))))))";
Pattern pattern = Pattern.compile(matchPattern);
Matcher match = pattern.matcher(dateStr);
return match.matches();
}
/**
* 得到字符串形式的当前时间,日期格式采用默认的格式.
* @return String
*/
public static String getCurrentDate() {
Date date = new Date();
return dateString(date, DEFAULT_DATE_FORMAT);
}
/**
* 比较两个时间之间相差的月份数
* @param beginDate 开始时间
* @param endDate 结束时间
* @return
*/
public static int compareMonth(Date beginDate, Date endDate){
Calendar aCalendar = Calendar.getInstance();
aCalendar.setTime(beginDate);
int year1 = aCalendar.get(Calendar.YEAR);
int month1 = aCalendar.get(Calendar.MONTH);
aCalendar.setTime(endDate);
int year2 = aCalendar.get(Calendar.YEAR);
int month2 = aCalendar.get(Calendar.MONTH);
return 12*(year2-year1)+month2-month1;
}
/**
* 比较两个时间之间相差的天数
* @param beginDate 开始时间
* @param endDate 结束时间
* @return
*/
public static int compareDay(Date beginDate, Date endDate){
long beginDateTime = beginDate.getTime();
long endDateTime = endDate.getTime();
long dayLong = 1000 * 60 * 60 * 24;
long beginDateLong = beginDateTime / dayLong;
long endDateLong = endDateTime / dayLong;
int compare = (int) (endDateLong - beginDateLong);
return compare;
}
/**
* 检查指定时间是否在某个时间范围内(闭区间)
* @param date Date 指定时间
* @param beginDate 范围开始时间
* @param endDate 范围结束时间
* @return true-在范围内, false-不在范围内
*/
public static boolean isInRange(Date date, Date beginDate, Date endDate) {
if (date.compareTo(beginDate)>=0 && date.compareTo(endDate) <= 0) {
return true;
} else {
return false;
}
}