培训网站建设方案书,wordpress 获取分类id,wordpress 两栏 主题,国际教育机构网站建设开发方案文章目录 前言DateUtils日期工具类总结 前言
在我们日常开发过程中#xff0c;当涉及到处理日期和时间的操作时#xff0c;字符串与Date日期类往往要经过相互转换#xff0c;且在SQL语句的动态查询中#xff0c;往往月份的格式不正确#xff0c;SQL语句执行的效果是不同的… 文章目录 前言DateUtils日期工具类总结 前言
在我们日常开发过程中当涉及到处理日期和时间的操作时字符串与Date日期类往往要经过相互转换且在SQL语句的动态查询中往往月份的格式不正确SQL语句执行的效果是不同的 例如如果我们想查询某年某月的所有订单,如果不能动态的获取到当月的天数信息例如4月的区间查询必须是[1-30]是查询不出来结果的这时候就需要我们在后端动态的根据当月天数查询当月有多少天完成关于月份的动态查询 四月的订单有一条 如果我们把区间单位设置为31是查不到一条信息的 区间在30就可以 DateUtils日期工具类
/*** 日期操作工具类*/
public class DateUtils {/*** 日期转换- String - Date** param dateString 字符串时间* return Date类型信息* throws Exception 抛出异常*/public static Date parseString2Date(String dateString) throws Exception {if (dateString null) {return null;}return parseString2Date(dateString, yyyy-MM-dd);}/*** 日期转换- String - Date** param dateString 字符串时间* param pattern 格式模板* return Date类型信息* throws Exception 抛出异常*/public static Date parseString2Date(String dateString, String pattern) throws Exception {if (dateString null) {return null;}SimpleDateFormat sdf new SimpleDateFormat(pattern);Date date sdf.parse(dateString);return date;}/*** 日期转换 Date - String** param date Date类型信息* return 字符串时间* throws Exception 抛出异常*/public static String parseDate2String(Date date) throws Exception {if (date null) {return null;}return parseDate2String(date, yyyy-MM-dd);}/*** 日期转换 Date - String** param date Date类型信息* param pattern 格式模板* return 字符串时间* throws Exception 抛出异常*/public static String parseDate2String(Date date, String pattern) throws Exception {if (date null) {return null;}SimpleDateFormat sdf new SimpleDateFormat(pattern);String strDate sdf.format(date);return strDate;}/*** 获取当前日期的本周一是几号** return 本周一的日期*/public static Date getThisWeekMonday() {Calendar cal Calendar.getInstance();cal.setTime(new Date());// 获得当前日期是一个星期的第几天int dayWeek cal.get(Calendar.DAY_OF_WEEK);if (1 dayWeek) {cal.add(Calendar.DAY_OF_MONTH, -1);}// 设置一个星期的第一天按中国的习惯一个星期的第一天是星期一cal.setFirstDayOfWeek(Calendar.MONDAY);// 获得当前日期是一个星期的第几天int day cal.get(Calendar.DAY_OF_WEEK);// 根据日历的规则给当前日期减去星期几与一个星期第一天的差值cal.add(Calendar.DATE, cal.getFirstDayOfWeek() - day);return cal.getTime();}/*** 获取当前日期周的最后一天** return 当前日期周的最后一天*/public static Date getSundayOfThisWeek() {Calendar c Calendar.getInstance();int dayOfWeek c.get(Calendar.DAY_OF_WEEK) - 1;if (dayOfWeek 0) {dayOfWeek 7;}c.add(Calendar.DATE, -dayOfWeek 7);return c.getTime();}/*** 根据日期区间获取月份列表** param minDate 开始时间* param maxDate 结束时间* return 月份列表* throws Exception*/public static ListString getMonthBetween(String minDate, String maxDate, String format) throws Exception {ArrayListString result new ArrayList();SimpleDateFormat sdf new SimpleDateFormat(yyyy-MM);Calendar min Calendar.getInstance();Calendar max Calendar.getInstance();min.setTime(sdf.parse(minDate));min.set(min.get(Calendar.YEAR), min.get(Calendar.MONTH), 1);max.setTime(sdf.parse(maxDate));max.set(max.get(Calendar.YEAR), max.get(Calendar.MONTH), 2);SimpleDateFormat sdf2 new SimpleDateFormat(format);Calendar curr min;while (curr.before(max)) {result.add(sdf2.format(curr.getTime()));curr.add(Calendar.MONTH, 1);}return result;}/*** 根据日期获取年度中的周索引** param date 日期* return 周索引* throws Exception*/public static Integer getWeekOfYear(String date) throws Exception {Date useDate parseString2Date(date);Calendar cal Calendar.getInstance();cal.setTime(useDate);return cal.get(Calendar.WEEK_OF_YEAR);}/*** 根据年份获取年中周列表** param year 年分* return 周列表* throws Exception*/public static MapInteger, String getWeeksOfYear(String year) throws Exception {Date useDate parseString2Date(year, yyyy);Calendar cal Calendar.getInstance();cal.setTime(useDate);//获取年中周数量int weeksCount cal.getWeeksInWeekYear();MapInteger, String mapWeeks new HashMap(55);for (int i 0; i weeksCount; i) {cal.get(Calendar.DAY_OF_YEAR);mapWeeks.put(i 1, parseDate2String(getFirstDayOfWeek(cal.get(Calendar.YEAR), i)));}return mapWeeks;}/*** 获取某年的第几周的开始日期** param year 年分* param week 周索引* return 开始日期* throws Exception*/public static Date getFirstDayOfWeek(int year, int week) throws Exception {Calendar c new GregorianCalendar();c.set(Calendar.YEAR, year);c.set(Calendar.MONTH, Calendar.JANUARY);c.set(Calendar.DATE, 1);Calendar cal (GregorianCalendar) c.clone();cal.add(Calendar.DATE, week * 7);return getFirstDayOfWeek(cal.getTime());}/*** 获取某年的第几周的结束日期** param year 年份* param week 周索引* return 结束日期* throws Exception*/public static Date getLastDayOfWeek(int year, int week) throws Exception {Calendar c new GregorianCalendar();c.set(Calendar.YEAR, year);c.set(Calendar.MONTH, Calendar.JANUARY);c.set(Calendar.DATE, 1);Calendar cal (GregorianCalendar) c.clone();cal.add(Calendar.DATE, week * 7);return getLastDayOfWeek(cal.getTime());}/*** 获取当前时间所在周的开始日期** param date 当前时间* return 开始时间*/public static Date getFirstDayOfWeek(Date date) {Calendar c new GregorianCalendar();c.setFirstDayOfWeek(Calendar.SUNDAY);c.setTime(date);c.set(Calendar.DAY_OF_WEEK, c.getFirstDayOfWeek());return c.getTime();}/*** 获取当前时间所在周的结束日期** param date 当前时间* return 结束日期*/public static Date getLastDayOfWeek(Date date) {Calendar c new GregorianCalendar();c.setFirstDayOfWeek(Calendar.SUNDAY);c.setTime(date);c.set(Calendar.DAY_OF_WEEK, c.getFirstDayOfWeek() 6);return c.getTime();}//获得上周一的日期public static Date geLastWeekMonday(Date date) {Calendar cal Calendar.getInstance();cal.setTime(getThisWeekMonday(date));cal.add(Calendar.DATE, -7);return cal.getTime();}//获得本周一的日期public static Date getThisWeekMonday(Date date) {Calendar cal Calendar.getInstance();cal.setTime(date);// 获得当前日期是一个星期的第几天int dayWeek cal.get(Calendar.DAY_OF_WEEK);if (1 dayWeek) {cal.add(Calendar.DAY_OF_MONTH, -1);}// 设置一个星期的第一天按中国的习惯一个星期的第一天是星期一cal.setFirstDayOfWeek(Calendar.MONDAY);// 获得当前日期是一个星期的第几天int day cal.get(Calendar.DAY_OF_WEEK);// 根据日历的规则给当前日期减去星期几与一个星期第一天的差值cal.add(Calendar.DATE, cal.getFirstDayOfWeek() - day);return cal.getTime();}//获得下周一的日期public static Date getNextWeekMonday(Date date) {Calendar cal Calendar.getInstance();cal.setTime(getThisWeekMonday(date));cal.add(Calendar.DATE, 7);return cal.getTime();}//获得今天日期public static Date getToday(){return new Date();}//获得本月一日的日期public static Date getFirstDay4ThisMonth(){Calendar calendar Calendar.getInstance();calendar.set(Calendar.DAY_OF_MONTH,1);return calendar.getTime();}public static void main(String[] args) {try {System.out.println(本周一 parseDate2String(getThisWeekMonday()));System.out.println(本月一日 parseDate2String(getFirstDay4ThisMonth()));} catch (Exception e) {e.printStackTrace();}}//获取本月多少天public static int getmaxmonthdays(Date date){Calendar calendar Calendar.getInstance();calendar.set(date.getYear(),date.getMonth(),date.getDate());return calendar.getActualMaximum(Calendar.DATE);}
}总结
由于DateUtils 工具类中的方法都是静态的是属于类的所有在使用的过程中只需要用类型.方法名调用即可DateUtils .getmaxmonthdays(Date date)该工具类为我们提供了大量关于Date的方法封装调用提升变成性能的同时也降低程序的耦合性。