




已阅读5页,还剩16页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
JAVA常用日历|日期|时间|星期工具类(封装方法非常多)相信大部分程序语言都需要处理日期、日历和时间相关的数据。本工具类是基于JAVA语言,封装了常用的方法,这些方法来源于各种实际项目,大部分都是会直接用到的。此工具类不依赖第三方JAR包,可以直接放入您的项目中使用。方法全是自己手写的,若有不正确之处还请指出。此工具类会不断更新完善,有需要的就收藏一下吧。import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.Arrays;import java.util.Calendar;import java.util.Date;import java.util.GregorianCalendar;/* * 日历日期工具类 * decription 提供常用的获取日期、星期、周数以及转换操作 * author Zebe * date 2014/11/27 * version 1.0.2 */public class CalendarUtil private static int WEEKS = 0;private static SimpleDateFormat SDF = new SimpleDateFormat(yyyy-MM-dd);private static SimpleDateFormat SDFT = new SimpleDateFormat(yyyy-MM-dd HH:mm:ss);/* * 获取当前年份 * return String 例如:2014 */public static String getYear() Calendar cd = Calendar.getInstance(); return String.valueOf(cd.get(Calendar.YEAR);/* * 获取某个日期中的年份 * return String 例如:2014-05-16 返回 2014 */public static String getYearOfDate(String date) Calendar cd = Calendar.getInstance();try cd.setTime(SDF.parse(date); catch (Exception e) e.printStackTrace();return String.valueOf(cd.get(Calendar.YEAR);/* * 获取当前月份 * return String 例如:4 */public static String getMonth() Calendar cd = Calendar.getInstance(); return String.valueOf(cd.get(Calendar.MONTH) + 1);/* * 获取某个日期中的月份 * return String 例如:2014-05-16 返回 5 */public static String getMonthOfDate(String date) Calendar cd = Calendar.getInstance();try cd.setTime(SDF.parse(date); catch (Exception e) e.printStackTrace();return String.valueOf(cd.get(Calendar.MONTH) + 1);/* * 获取日期中的英文月份缩写 * return String */public static String getMonthShortEnNameOfDate(String date) Calendar cd = Calendar.getInstance();String result = ;try cd.setTime(SDF.parse(date);int month = cd.get(Calendar.MONTH) + 1;switch (month) case 1:result = JAN;break;case 2:result = FEB;break;case 3:result = MAR;break;case 4:result = APR;break;case 5:result = MAY;break;case 6:result = JUN;break;case 7:result = JUL;break;case 8:result = AUG;break;case 9:result = SEP;break;case 10:result = OCT;break;case 11:result = NOV;break;case 12:result = DEC;break; catch (Exception e) e.printStackTrace();return result;/* * 获取当前日期 * return String 例如:23 */public static String getDay() Calendar cd = Calendar.getInstance(); return String.valueOf(cd.get(Calendar.DAY_OF_MONTH);/* * 获取某个日期中的日期 * return String 例如:2014-05-16 返回 16 */public static String getDayOfDate(String date) Calendar cd = Calendar.getInstance();try cd.setTime(SDF.parse(date); catch (Exception e) e.printStackTrace();return String.valueOf(cd.get(Calendar.DAY_OF_MONTH);/* * 获取昨天日期 * return yyyy-MM-dd */public static String getYesterday() Calendar cal = Calendar.getInstance();try cal.setTime(SDF.parse(getToday(); cal.add(Calendar.DAY_OF_YEAR, -1); catch (Exception e) e.printStackTrace();return SDF.format(cal.getTime();/* * 获取今天日期 * return yyyy-MM-dd */public static String getToday() return SDF.format(new Date();/* * 获取明天日期 * return yyyy-MM-dd */public static String getTommorow() Calendar cal = Calendar.getInstance();try cal.setTime(SDF.parse(getToday(); cal.add(Calendar.DAY_OF_YEAR, +1); catch (Exception e) e.printStackTrace();return SDF.format(cal.getTime();/* * 获取当前日期和时间 * return yyyy-MM-dd HH:mm:ss */public static String getDateTime() return SDFT.format(new Date();/* * 获得当前日期与本周一相差的天数 * return int */private static int getMondayPlus() Calendar cd = Calendar.getInstance(); / 获得今天是一周的第几天,星期日是第一天,星期二是第二天. int dayOfWeek = cd.get(Calendar.DAY_OF_WEEK); if (dayOfWeek = 1) return -6; else return 2 - dayOfWeek; /* * 获得上周星期一的日期 * return yyyy-MM-dd */public static String getPreMonday() WEEKS-; int mondayPlus = getMondayPlus(); GregorianCalendar currentDate = new GregorianCalendar(); currentDate.add(GregorianCalendar.DATE, mondayPlus + 7 * WEEKS); Date monday = currentDate.getTime(); SimpleDateFormat sdf = new SimpleDateFormat(yyyy-MM-dd);return sdf.format(monday); /* * 获得本周星期一的日期 * return yyyy-MM-dd */public static String getMonday() WEEKS = 0;int mondayPlus = getMondayPlus(); GregorianCalendar currentDate = new GregorianCalendar(); currentDate.add(GregorianCalendar.DATE, mondayPlus); Date monday = currentDate.getTime(); SimpleDateFormat sdf = new SimpleDateFormat(yyyy-MM-dd);return sdf.format(monday); /* * 获得下周星期一的日期 * return yyyy-MM-dd */public static String getNextMonday() WEEKS+; int mondayPlus = getMondayPlus(); GregorianCalendar currentDate = new GregorianCalendar(); currentDate.add(GregorianCalendar.DATE, mondayPlus + 7 * WEEKS); Date monday = currentDate.getTime(); SimpleDateFormat sdf = new SimpleDateFormat(yyyy-MM-dd);return sdf.format(monday);/* * 获取某一年第几周的星期一 * return yyyy-MM-dd */public static String getMondayOfWeek(int year, int week) Calendar cal = Calendar.getInstance();cal.setFirstDayOfWeek(Calendar.MONDAY); cal.clear(); cal.set(Calendar.YEAR, year); cal.set(Calendar.WEEK_OF_YEAR,week); cal.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);return SDF.format(cal.getTime();/* * 获取某一年第几周的星期日 * return yyyy-MM-dd */public static String getSundayOfWeek(int year, int week) Calendar cal = Calendar.getInstance();cal.setFirstDayOfWeek(Calendar.MONDAY); cal.clear(); cal.set(Calendar.YEAR, year); cal.set(Calendar.WEEK_OF_YEAR,week); cal.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY);return SDF.format(cal.getTime();/* * 获取指定周星期日的日期 * return yyyy-MM-dd */public static String getSunday() int mondayPlus = getMondayPlus(); GregorianCalendar currentDate = new GregorianCalendar(); currentDate.add(GregorianCalendar.DATE, mondayPlus + 7 * WEEKS + 6); Date monday = currentDate.getTime(); SimpleDateFormat sdf = new SimpleDateFormat(yyyy-MM-dd);return sdf.format(monday);/* * 获取当前周是本月的第几周 * return String */public static int getWeekOfMonth() Calendar cd = Calendar.getInstance(); cd.setFirstDayOfWeek(Calendar.MONDAY);return cd.get(Calendar.WEEK_OF_MONTH);/* * 获取当前周是本年的第几周 * return String */public static int getWeekOfYear() Calendar cd = Calendar.getInstance();cd.setFirstDayOfWeek(Calendar.MONDAY);return cd.get(Calendar.WEEK_OF_YEAR);/* * 获取本月第一天 * param date * return yyyy-MM-dd */public static String getFirstDayOfThisMonth() String year = getYear();String month = getMonth();if (month.length() = 1) return year + -0 + month + -01;return year + - + month + -01;/* * 获取本月最后一天 * param date * return yyyy-MM-dd */public static String getLastDayOfThisMonth() Calendar calendar = Calendar.getInstance(); try calendar.set(calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH) + 1, 1); calendar.add(Calendar.DATE, -1); catch (Exception e) e.printStackTrace();return SDF.format(calendar.getTime();/* * 获取指定年份月份的最后一天(整形参数) * param month * return yyyy-MM-dd */public static String getLastDayOfMonth(int year, int month) Calendar calendar = Calendar.getInstance(); try calendar.set(year, month, 1);calendar.add(Calendar.DATE, -1); catch (Exception e) e.printStackTrace();return SDF.format(calendar.getTime();/* * 获取指定年份月份的最后一天(字符串参数) * param month * return yyyy-MM-dd */public static String getLastDayOfMonth(String year, String month) int y = Integer.parseInt(year);int m = Integer.parseInt(month);return getLastDayOfMonth(y, m);/* * 获取两个日期之间相差天数 * param fromDay * param toDay * return long */public static long getDaysBetween(String fromDay, String toDay) long days = 0;try Date d1 = SDF.parse(fromDay);Date d2 = SDF.parse(toDay);long diff = d2.getTime() - d1.getTime();days = diff / (1000 * 60 * 60 * 24); catch (Exception e) e.printStackTrace();return days;/* * 按指定格式转换日期对象为字符串 * param date 日期对象 * param format 日期格式,如:yyyy-MM-dd HH:mm:ss * return String */public static String convertDateToString(Date date, String format) SimpleDateFormat mySDF = new SimpleDateFormat(format);String dateStr = mySDF.format(date);return dateStr;/* * 按指定格式转换字符串为日期对象 * param date 字符串日期 * param format 日期格式,如:yyyy-MM-dd HH:mm:ss * return String */public static Date convertStringToDate(String date, String format) try SimpleDateFormat mySDF = new SimpleDateFormat(format);Date dateTemp = mySDF.parse(date);return dateTemp; catch (Exception e) e.printStackTrace();return null;/* * 获取指定分钟前的时间字符串 * param minute 分钟 * return String yyyy-MM-dd HH:mm:ss */public static String getPastTimeByMinute(int minute) Date date = new Date(new Date().getTime() - (minute * 60 * 1000);return convertDateToString(date, yyyy-MM-dd HH:mm:ss);/* * 获取指定分钟前的时间字符串(自定义格式) * param minute 分钟 * param format 日期格式,如:yyyy-MM-dd HH:mm:ss * return String */public static String getPastTimeByMinute(int minute, String format) Date date = new Date(new Date().getTime() - (minute * 60 * 1000);return convertDateToString(date, format);/* * 获取指定天数前的时间字符串 * param day 天数 * return String yyyy-MM-dd HH:mm:ss */public static String getPastTimeByDay(int day) Date date = new Date(new Date().getTime() - (day * 24 * 60 * 60 * 1000);return convertDateToString(date, yyyy-MM-dd HH:mm:ss);/* * 获取指定天数前的时间字符串(自定义格式) * param day 天数 * param format 日期格式,如:yyyy-MM-dd HH:mm:ss * return String yyyy-MM-dd HH:mm:ss */public static String getPastTimeByDay(int day, String format) Date date = new Date(new Date().getTime() - (day * 24 * 60 * 60 * 1000);return convertDateToString(date, format);/* * 获取基于某个时间点后多少天后的时间点 * description 如:2015-08-01 16:00:05,15天之后的时间点是 * param beginTime 开始时间点 yyyy-MM-dd HH:mm:ss * param day 天数 * return String yyyy-MM-dd HH:mm:ss */public static String getFutureTimeByDay(String beginTime, int day) Date futureDate = new Date();try Date debinDate = SDFT.parse(beginTime);futureDate = new Date(debinDate.getTime() + (day * 24 * 60 * 60 * 1000); catch (ParseException e) / TODO Auto-generated catch blocke.printStackTrace();return convertDateToString(futureDate, yyyy-MM-dd HH:mm:ss);/* * 判断一组日期是否连续 * param dates Date数组 * return boolean */public static boolean isContinuousDate(Date dates) SimpleDateFormat sdf = new SimpleDateFormat(yyyy-MM-dd);long datesNew;boolean continuous = false;try if (dates != null & dates.length = 2) / 通过 yyyy-MM-dd 进行格式化并得到一个long类型的日期数组datesNew = new longdates.length;for (int i=0; idates.length; i+) datesNewi = sdf.parse(sdf.format(datesi).getTime();/ 对这个数组进行排序Arrays.sort(datesNew);/ 遍历新的日期数组,计算两个日期间的时间差(86400000为一整天的差距)for (int i=0; idatesNew.length; i+) Long tempDate = datesNewi;if (i + 1) datesNew.length) Long nextDate = datesNewi + 1;if (Math.abs(tempDate - nextDate) != 86400000) return false;return true; catch (Exception e) e.printStackTrace();return continuous;/* * 方法测试 * param args * throws ParseException */public static void main(String args) throws ParseException System.out.println(获取当前年: + getYear();System.out.println(获取日期中的年份: + getYearOfDate(2012-12-08);System.out.println(获取当前月: + getMonth();System.out.println(获取日期中的月份: + getMonthOfDate(2012-12-08);System.out.println(获取当前日: + getDay();System.out.println(获取日期中的日: + getDayOfDate(2012-12-08);System.out.println(获取昨天日期: + getYesterday();System.out.println(获取今天日期: + getToday();System.out.println(获取明天日期: + getTommorow();System.out.println(获取当前日期和时间: + getDateTime();System.out.println(获得当前日期与本周一相差的天数: + getMondayPlus();System.out.println(获得上周星期一的日期: + getPreMonday();System.out.println(获得上周星期日的日期: + getSunday();System.out.println(获得本周星期一的日期: + getMonday();System.out.println(获得本周星期日的日期: + getSunday();System.out.println(获得下周星期一的日期: + getNextMonday();System.out.println(获得下周星期日的日期: + getSunday();System.out.println(获取当前周是本月的第几周: + getWeekOfMonth();System.out.println(获取当前周是本年的第几周: + getWeekOfYear();System.out.println(获取本月第一天: + getFirstDayOfThisMonth();System.out.println(获取本月最后一天: + getLa
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025江苏张家港检验认证有限公司招聘1人考前自测高频考点模拟试题及一套答案详解
- 浙江国企招聘截止9月23日可笔试历年参考题库附带答案详解
- 浙江国企招聘2025年台州市椒江区市场开发服务中心(台州市椒江区心海市场管理有限公司)公开招聘工作人员笔试及笔试历年参考题库附带答案详解
- 2025黄山黟县桃花源人才服务有限公司招聘劳务派遣工作人员1人笔试历年参考题库附带答案详解
- 2025陕西九州通医药有限公司招聘10人笔试历年参考题库附带答案详解
- 2025重庆秀山县县属国有企业招聘(918922)笔试历年参考题库附带答案详解
- 2025重庆市地质矿产勘查开发集团有限公司招聘62人笔试历年参考题库附带答案详解
- 2025鄂尔多斯市交通投资有限公司苏乌段一级公路收费所招聘笔试历年参考题库附带答案详解
- 2025贵州省余庆水投劳务服务有限责任公司招聘劳务派遣人员笔试历年参考题库附带答案详解
- 2025福建泉州丰泽教育管理集团有限公司从事丰泽机关幼儿园丰盛园教学工作国企派遣员工专项招聘16人笔试历年参考题库附带答案详解
- GB/T 18266.2-2025体育场所等级的划分第2部分:健身房
- 第4节 跨学科实践:电路创新设计展示-教科版九年级《物理》上册教学课件
- DGTJ08-2310-2019 外墙外保温系统修复技术标准
- 光电美容培训课件
- 子痫及子痫前期病例分析
- 2025至2030年中国智慧场馆行业市场运营态势及投资前景研判报告
- 2025年热塑性硫化橡胶市场前景分析
- 竣工结算审计服务投标方案(技术方案)
- 公路施工质量培训课件
- 2024北森图形推理题
- 基础护理8章试题及答案
评论
0/150
提交评论