版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、package com.mould.core.utils;import java.io.Serializable;import java.text.ParseException;import java.text.ParsePosition;import java.text.SimpleDateFormat;import java.util.Calendar;import java.util.Date;import java.util.GregorianCalendar;import java.util.TimeZone;/* * 日期操作工具类,主要实现了日期的常用操作。 * <p>
2、; * 在工具类中经常使用到工具类的格式化描述,这个主要是一个日期的操作类,所以日志格式主要使用 SimpleDateFormat的定义格式. * <p> * 格式的意义如下: 日期和时间模式 <br> * 日期和时间格式由日期和时间模式字符串指定。在日期和时间模式字符串中,未加引号的字母 'A' 到 'Z' 和 'a' 到 'z' * 被解释为模式字母,用来表示日期或时间字符串元素。文本可以使用单引号 (') 引起来,以免进行解释。"''" * 表示单引号。所有
3、其他字符均不解释;只是在格式化时将它们简单复制到输出字符串,或者在分析时与输入字符串进行匹配。 * <p> * 定义了以下模式字母(所有其他字符 'A' 到 'Z' 和 'a' 到 'z' 都被保留): <br> * * 模式字母通常是重复的,其数量确定其精确表示: * * */public final class DateUtil implements Serializable /* * */private static final long serialVersionUID = -30989851390
4、95632110L;/ 默认显示日期的格式public static final String DATAFORMAT_STR = "yyyy-MM-dd"/ 默认显示日期的格式public static final String YYYY_MM_DATAFORMAT_STR = "yyyy-MM"/ 默认显示日期时间的格式public static final String DATATIMEF_STR = "yyyy-MM-dd HH:mm:ss"/ 默认显示日期时间的格式public static final String DATA
5、TIMEF_P_STR = "yyyyMMddHHmmss"/ 默认显示简体中文日期的格式public static final String ZHCN_DATAFORMAT_STR = "yyyy年MM月dd日"/ 默认显示简体中文日期时间的格式public static final String ZHCN_DATATIMEF_STR = "yyyy年MM月dd日HH时mm分ss秒"/ 默认显示简体中文日期时间的格式public static final String ZHCN_DATATIMEF_STR_4yMMddHHmm =
6、"yyyy年MM月dd日HH时mm分"public DateUtil() /* * 格式化日期显示格式 * * param sdate * 原始日期格式 s - 表示 "yyyy-mm-dd" 形式的日期的 String 对象 * param format * 格式化后日期格式 * return 格式化后的日期显示 */public static String dateFormat(String sdate, String format) SimpleDateFormat formatter = new SimpleDateFormat(format);
7、java.sql.Date date = java.sql.Date.valueOf(sdate);String dateString = formatter.format(date);return dateString;/* * 求两个日期相差天数 * * param sd * 起始日期,格式yyyy-MM-dd * param ed * 终止日期,格式yyyy-MM-dd * return 两个日期相差天数 */public static long getIntervalDays(String sd, String ed) return (java.sql.Date.valueOf(ed)
8、.getTime() - (java.sql.Date.valueOf(sd).getTime() / (3600 * 24 * 1000);/* * 起始年月yyyy-MM与终止月yyyy-MM之间跨度的月数。 * * param beginMonth * 格式为yyyy-MM * param endMonth * 格式为yyyy-MM * return 整数。 */public static int getInterval(String beginMonth, String endMonth) int intBeginYear = Integer.parseInt(beginMonth.s
9、ubstring(0, 4);int intBeginMonth = Integer.parseInt(beginMonth.substring(beginMonth.indexOf("-") + 1);int intEndYear = Integer.parseInt(endMonth.substring(0, 4);int intEndMonth = Integer.parseInt(endMonth.substring(endMonth.indexOf("-") + 1);return (intEndYear - intBeginYear) * 1
10、2)+ (intEndMonth - intBeginMonth) + 1;/* * 根据给定的分析位置开始分析日期/时间字符串。例如,时间文本 "07/10/96 4:5 PM, PDT" 会分析成等同于 * Date(837039928046) 的 Date。 * * param sDate * param dateFormat * return */public static Date getDate(String sDate, String dateFormat) SimpleDateFormat fmt = new SimpleDateFormat(dateFor
11、mat);ParsePosition pos = new ParsePosition(0);return fmt.parse(sDate, pos);/* * 取得当前日期的年份,以yyyy格式返回. * * return 当年 yyyy */public static String getCurrentYear() return getFormatCurrentTime("yyyy");/* * 自动返回上一年。例如当前年份是2007年,那么就自动返回2006 * * return 返回结果的格式为 yyyy */public static String getBefor
12、eYear() String currentYear = getFormatCurrentTime("yyyy");int beforeYear = Integer.parseInt(currentYear) - 1;return "" + beforeYear;/* * 取得当前日期的月份,以MM格式返回. * * return 当前月份 MM */public static String getCurrentMonth() return getFormatCurrentTime("MM");/* * 取得当前日期的天数,以格式&q
13、uot;dd"返回. * * return 当前月中的某天dd */public static String getCurrentDay() return getFormatCurrentTime("dd");/* * 返回当前时间字符串。 * <p> * 格式:yyyy-MM-dd * * return String 指定格式的日期字符串. */public static String getCurrentDate() return getFormatDateTime(new Date(), "yyyy-MM-dd");/* *
14、返回当前指定的时间戳。格式为yyyy-MM-dd HH:mm:ss * * return 格式为yyyy-MM-dd HH:mm:ss,总共19位。 */public static String getCurrentDateTime() return getFormatDateTime(new Date(), "yyyy-MM-dd HH:mm:ss");/* * 返回给定时间字符串。 * <p> * 格式:yyyy-MM-dd * * param date * 日期 * return String 指定格式的日期字符串. */public static Str
15、ing getFormatDate(Date date) return getFormatDateTime(date, "yyyy-MM-dd HH:mm:ss");/* * 返回给定时间字符串。 * <p> * 格式:yyyy-MM-dd * * param date * 日期 * return String 指定格式的日期字符串. */public static String getFormatDate(Date date,String daFormat) return getFormatDateTime(date, daFormat);/* * 根据制定的
16、格式,返回日期字符串。例如2007-05-05 * * param format * "yyyy-MM-dd" 或者 "yyyy/MM/dd",当然也可以是别的形式。 * return 指定格式的日期字符串。 */public static String getFormatDate(String format) return getFormatDateTime(new Date(), format);/* * 返回当前时间字符串。 * <p> * 格式:yyyy-MM-dd HH:mm:ss * * return String 指定格式的日期
17、字符串. */public static String getCurrentTime() return getFormatDateTime(new Date(), "yyyy-MM-dd HH:mm:ss");/* * 根据指定的日期格式 返回当前时间 2013-7-22 * <p> * * return String 指定格式的日期字符串. */public static String getCurrentTimeForType(String dateType) return getFormatDateTime(new Date(), "yyyy-M
18、M-dd HH:mm:ss");/* * 返回给定时间字符串。 * <p> * 格式:yyyy-MM-dd HH:mm:ss * * param date * 日期 * return String 指定格式的日期字符串. */public static String getFormatTime(Date date) return getFormatDateTime(date, "yyyy-MM-dd HH:mm:ss");/* * 根据给定的格式,返回时间字符串。 * <p> * 格式参照类描绘中说明.和方法getFormatDate是一样
19、的。 * * param format * 日期格式字符串 * return String 指定格式的日期字符串. */public static String getFormatCurrentTime(String format) return getFormatDateTime(new Date(), format);/* * 根据给定的格式与时间(Date类型的),返回时间字符串。最为通用。<br> * * param date * 指定的日期 * param format * 日期格式字符串 * return String 指定格式的日期字符串. */public stat
20、ic String getFormatDateTime(Date date, String format) SimpleDateFormat sdf = new SimpleDateFormat(format);return sdf.format(date);/* * 取得指定年月日的日期对象. * * param year * 年 * param month * 月注意是从1到12 * param day * 日 * return 一个java.util.Date()类型的对象 */public static Date getDateObj(int year, int month, int
21、day) Calendar c = new GregorianCalendar();c.set(year, month - 1, day);return c.getTime();/* * 获取指定日期的下一天。 * * param date * yyyy/MM/dd * return yyyy/MM/dd */public static String getDateTomorrow(String date) Date tempDate = null;if (date.indexOf("/") > 0)tempDate = getDateObj(date, "
22、/");if (date.indexOf("-") > 0)tempDate = getDateObj(date, "-");tempDate = getDateAdd(tempDate, 1);return getFormatDateTime(tempDate, "yyyy/MM/dd");/* * 获取与指定日期相差指定天数的日期。 * * param date * yyyy/MM/dd * param offset * 正整数 * return yyyy/MM/dd */public static Date ge
23、tDateOffset(String date, int offset) / Date tempDate = getDateObj(date, "/");Date tempDate = null;if (date.indexOf("/") > 0)tempDate = getDateObj(date, "/");if (date.indexOf("-") > 0)tempDate = getDateObj(date, "-");return tempDate = getDateAdd
24、(tempDate, offset);/* * 取得指定分隔符分割的年月日的日期对象. * * param argsDate * 格式为"yyyy-MM-dd" * param split * 时间格式的间隔符,例如“-”,“/”,要和时间一致起来。 * return 一个java.util.Date()类型的对象 */public static Date getDateObj(String argsDate, String split) String temp = argsDate.split(split);int year = new Integer(temp0).in
25、tValue();int month = new Integer(temp1).intValue();int day = new Integer(temp2).intValue();return getDateObj(year, month, day);/* * 取得给定字符串描述的日期对象,描述模式采用pattern指定的格式. * * param dateStr * 日期描述 从给定字符串的开始分析文本,以生成一个日期。该方法不使用给定字符串的整个文本。 有关日期分析的更多信息,请参阅 * parse(String, ParsePosition) 方法。一个 String,应从其开始处进行
26、分析 * * param pattern * 日期模式 * return 给定字符串描述的日期对象。 */public static Date getDate2String(String formatStr,String dateStr) SimpleDateFormat sdf = new SimpleDateFormat(formatStr);Date resDate = null;if(StringUtil.isBlank(dateStr) return null;try resDate = sdf.parse(dateStr); catch (Exception e) e.printS
27、tackTrace();return resDate;/* * 取得当前Date对象. * * return Date 当前Date对象. */public static Date getDateObj() Calendar c = new GregorianCalendar();return c.getTime();/* * * return 当前月份有多少天; */public static int getDaysOfCurMonth() int curyear = new Integer(getCurrentYear().intValue(); / 当前年份int curMonth =
28、new Integer(getCurrentMonth().intValue();/ 当前月份int mArray = new int 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30,31 ;/ 判断闰年的情况 ,2月份有29天;if (curyear % 400 = 0)| (curyear % 100 != 0) && (curyear % 4 = 0) mArray1 = 29;return mArraycurMonth - 1;/ 如果要返回下个月的天数,注意处理月份12的情况,防止数组越界;/ 如果要返回上个月的天数,注意处理月份
29、1的情况,防止数组越界;/* * 根据指定的年月 返回指定月份(yyyy-MM)有多少天。 * * param time * yyyy-MM * return 天数,指定月份的天数。 */public static int getDaysOfCurMonth(final String time) if (time.length() != 7) throw new NullPointerException("参数的格式必须是yyyy-MM");String timeArray = time.split("-");int curyear = new Inte
30、ger(timeArray0).intValue(); / 当前年份int curMonth = new Integer(timeArray1).intValue();/ 当前月份if (curMonth > 12) throw new NullPointerException("参数的格式必须是yyyy-MM,而且月份必须小于等于12。");int mArray = new int 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30,31 ;/ 判断闰年的情况 ,2月份有29天;if (curyear % 400 = 0)| (cu
31、ryear % 100 != 0) && (curyear % 4 = 0) mArray1 = 29;if (curMonth = 12) return mArray0;return mArraycurMonth - 1;/ 如果要返回下个月的天数,注意处理月份12的情况,防止数组越界;/ 如果要返回上个月的天数,注意处理月份1的情况,防止数组越界;/* * 返回指定为年度为year月度month的月份内,第weekOfMonth个星期的第dayOfWeek天是当月的几号。<br> * 00 00 00 01 02 03 04 <br> * 05 06
32、 07 08 09 10 11<br> * 12 13 14 15 16 17 18<br> * 19 20 21 22 23 24 25<br> * 26 27 28 29 30 31 <br> * 2006年的第一个周的1到7天为:05 06 07 01 02 03 04 <br> * 2006年的第二个周的1到7天为:12 13 14 08 09 10 11 <br> * 2006年的第三个周的1到7天为:19 20 21 15 16 17 18 <br> * 2006年的第四个周的1到7天为:26 27
33、 28 22 23 24 25 <br> * 2006年的第五个周的1到7天为:02 03 04 29 30 31 01 。本月没有就自动转到下个月了。 * * param year * 形式为yyyy <br> * param month * 形式为MM,参数值在1-12。<br> * param weekOfMonth * 在1-6,因为一个月最多有6个周。<br> * param dayOfWeek * 数字在1到7之间,包括1和7。1表示星期天,7表示星期六<br> * -6为星期日-1为星期五,0为星期六 <br>
34、; * return <type>int</type> */public static int getDayofWeekInMonth(String year, String month,String weekOfMonth, String dayOfWeek) Calendar cal = new GregorianCalendar();/ 在具有默认语言环境的默认时区内使用当前时间构造一个默认的 GregorianC y = new Integer(year).intValue();int m = new Integer(month).intV
35、alue();cal.clear();/ 不保留以前的设置cal.set(y, m - 1, 1);/ 将日期设置为本月的第一天。cal.set(Calendar.DAY_OF_WEEK_IN_MONTH,new Integer(weekOfMonth).intValue();cal.set(Calendar.DAY_OF_WEEK, new Integer(dayOfWeek).intValue();/ System.out.print(cal.get(Calendar.MONTH)+" ");/ System.out.print("当"+cal.ge
36、t(Calendar.WEEK_OF_MONTH)+"t");/ WEEK_OF_MONTH表示当天在本月的第几个周。不管1号是星期几,都表示在本月的第一个周return cal.get(Calendar.DAY_OF_MONTH);/* * 根据指定的年月日小时分秒,返回一个java.Util.Date对象。 * * param year * 年 * param month * 月 0-11 * param date * 日 * param hourOfDay * 小时 0-23 * param minute * 分 0-59 * param second * 秒 0-5
37、9 * return 一个Date对象。 */public static Date getDate(int year, int month, int date, int hourOfDay,int minute, int second) Calendar cal = new GregorianCalendar();cal.set(year, month, date, hourOfDay, minute, second);return cal.getTime();/* * 根据指定的年、月、日返回当前是星期几。1表示星期天、2表示星期一、7表示星期六。 * * param year * para
38、m month * month是从1开始的12结束 * param day * return 返回一个代表当期日期是星期几的数字。1表示星期天、2表示星期一、7表示星期六。 */public static int getDayOfWeek(String year, String month, String day) Calendar cal = new GregorianCalendar(new Integer(year).intValue(),new Integer(month).intValue() - 1, new Integer(day).intValue();return cal.g
39、et(Calendar.DAY_OF_WEEK);/* * 根据指定的年、月、日返回当前是星期几。1表示星期天、2表示星期一、7表示星期六。 * * param date * "yyyy/MM/dd",或者"yyyy-MM-dd" * return 返回一个代表当期日期是星期几的数字。1表示星期天、2表示星期一、7表示星期六。 */public static int getDayOfWeek(String date) String temp = null;if (date.indexOf("/") > 0) temp = dat
40、e.split("/");if (date.indexOf("-") > 0) temp = date.split("-");return getDayOfWeek(temp0, temp1, temp2);/* * 返回当前日期是星期几。例如:星期日、星期一、星期六等等。 * * param date * 格式为 yyyy/MM/dd 或者 yyyy-MM-dd * return 返回当前日期是星期几 */public static String getChinaDayOfWeek(String date) String we
41、eks = new String "星期日", "星期一", "星期二", "星期三", "星期四","星期五", "星期六" ;int week = getDayOfWeek(date);return weeksweek - 1;/* * 根据指定的年、月、日返回当前是星期几。1表示星期天、2表示星期一、7表示星期六。 * * param date * * return 返回一个代表当期日期是星期几的数字。1表示星期天、2表示星期一、7表示星期六。 */
42、public static int getDayOfWeek(Date date) Calendar cal = new GregorianCalendar();cal.setTime(date);return cal.get(Calendar.DAY_OF_WEEK);/* * 返回制定日期所在的周是一年中的第几个周。<br> * created by wangmj at 20060324.<br> * * param year * param month * 范围1-12<br> * param day * return int */public sta
43、tic int getWeekOfYear(String year, String month, String day) Calendar cal = new GregorianCalendar();cal.clear();cal.set(new Integer(year).intValue(),new Integer(month).intValue() - 1, new Integer(day).intValue();return cal.get(Calendar.WEEK_OF_YEAR);/* * 取得给定日期加上一定天数后的日期对象. * * param date * 给定的日期对象
44、* param amount * 需要添加的天数,如果是向前的天数,使用负数就可以. * return Date 加上一定天数以后的Date对象. */public static Date getDateAdd(Date date, int amount) Calendar cal = new GregorianCalendar();cal.setTime(date);cal.add(GregorianCalendar.DATE, amount);return cal.getTime();/* * 取得给定日期加上一定天数后的日期对象. * * param date * 给定的日期对象 * p
45、aram amount * 需要添加的天数,如果是向前的天数,使用负数就可以. * param format * 输出格式. * return Date 加上一定天数以后的Date对象. */public static String getFormatDateAdd(Date date, int amount, String format) Calendar cal = new GregorianCalendar();cal.setTime(date);cal.add(GregorianCalendar.DATE, amount);return getFormatDateTime(cal.ge
46、tTime(), format);/* * 获得当前日期固定间隔天数的日期,如前60天dateAdd(-60) * * param amount * 距今天的间隔日期长度,向前为负,向后为正 * param format * 输出日期的格式. * return java.lang.String 按照格式输出的间隔的日期字符串. */public static String getFormatCurrentAdd(int amount, String format) Date d = getDateAdd(new Date(), amount);return getFormatDateTime(
47、d, format);/* * 取得给定格式的昨天的日期输出 * * param format * 日期输出的格式 * return String 给定格式的日期字符串. */public static String getFormatYestoday(String format) return getFormatCurrentAdd(-1, format);/* * 返回指定日期的前一天。<br> * * param sourceDate * param format * yyyy MM dd hh mm ss * return 返回日期字符串,形式和formcat一致。 */p
48、ublic static String getYestoday(String sourceDate, String format) return getFormatDateAdd(getDate2String(sourceDate, format), -1,format);/* * 返回明天的日期,<br> * * param format * return 返回日期字符串,形式和formcat一致。 */public static String getFormatTomorrow(String format) return getFormatCurrentAdd(1, forma
49、t);/* * 返回指定日期的后一天。<br> * * param sourceDate * param format * return 返回日期字符串,形式和formcat一致。 */public static String getFormatDateTommorrow(String sourceDate, String format) return getFormatDateAdd(getDate2String(sourceDate, format), 1,format);/* * 根据主机的默认 TimeZone,来获得指定形式的时间字符串。 * * param dateFo
50、rmat * return 返回日期字符串,形式和formcat一致。 */public static String getCurrentDateString(String dateFormat) Calendar cal = Calendar.getInstance(TimeZone.getDefault();SimpleDateFormat sdf = new SimpleDateFormat(dateFormat);sdf.setTimeZone(TimeZone.getDefault();return sdf.format(cal.getTime();/ /*/ * deprecate
51、d 不鼓励使用。 返回当前时间串 格式:yyMMddhhmmss,在上传附件时使用/ */ * return String/ */ public static String getCurDate() / GregorianCalendar gcDate = new GregorianCalendar();/ int year = gcDate.get(GregorianCalendar.YEAR);/ int month = gcDate.get(GregorianCalendar.MONTH) + 1;/ int day = gcDate.get(GregorianCalendar.DAY_OF_MONTH);/ int hour = gcDate.get(GregorianCalendar.HOUR_OF_DAY);/ int minute = gcDate.get(GregorianCalendar.MINUTE);/ int sen = gcDate.get(GregorianCalendar.SECOND);/ String y;/ String m;/ String d;/ String h;/ String n;/ String s;/ y = new Integer(year).toString();/ if (month < 10) / m = &quo
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年临时仓储设施租赁及管理服务合同
- 标准新工程设计合同样本
- 2024年多人合伙共盈合同书范本
- 2024年度智能仓库设备安装合同
- 代销协议书范例2024
- 全面房屋装修合同模板集成
- 出口业务代理协议范本
- 2024物流合同范本
- 常见劳务派遣委托协议样本
- 广州建设工程装修施工合同范例
- 雅鲁藏布江大拐弯巨型水电站规划方案
- 广西基本医疗保险门诊特殊慢性病申报表
- 城市经济学习题与答案
- 国开成本会计第14章综合练习试题及答案
- 幼儿园大班科学:《树叶为什么会变黄》课件
- 1到50带圈数字直接复制
- 铁路工程施工组织设计(施工方案)编制分类
- 幼儿园中班数学《有趣的图形》课件
- 《规划每一天》教案2021
- 草莓创意主题实用框架模板ppt
- 山大口腔颌面外科学课件第5章 口腔种植外科-1概论、口腔种植的生物学基础
评论
0/150
提交评论