java.util.*;
import?java.text.*;
import?java.util.Calendar;?
public?class?VeDate?{
?/**
??*?获取现在时间
??*?
??*?@return?返回时间类型?yyyy-MM-dd?HH:mm:ss
??*/
?public?static?Date?getNowDate()?{
??Date?currentTime?=?new?Date();
??SimpleDateFormat?formatter?=?new?SimpleDateFormat("yyyy-MM-dd?HH:mm:ss");
??String?dateString?=?formatter.format(currentTime);
??ParsePosition?pos?=?new?ParsePosition(8);
??Date?currentTime_2?=?formatter.parse(dateString,?pos);
??return?currentTime_2;
?}?
?/**
??*?获取现在时间
??*?
??*?@return返回短时间格式?yyyy-MM-dd
??*/
?public?static?Date?getNowDateShort()?{
??Date?currentTime?=?new?Date();
??SimpleDateFormat?formatter?=?new?SimpleDateFormat("yyyy-MM-dd");
??String?dateString?=?formatter.format(currentTime);
??ParsePosition?pos?=?new?ParsePosition(8);
??Date?currentTime_2?=?formatter.parse(dateString,?pos);
??return?currentTime_2;
?}?
?/**
??*?获取现在时间
??*?
??*?@return返回字符串格式?yyyy-MM-dd?HH:mm:ss
??*/
?public?static?String?getStringDate()?{
??Date?currentTime?=?new?Date();
??SimpleDateFormat?formatter?=?new?SimpleDateFormat("yyyy-MM-dd?HH:mm:ss");
??String?dateString?=?formatter.format(currentTime);
??return?dateString;
?}?
?/**
??*?获取现在时间
??*?
??*?@return?返回短时间字符串格式yyyy-MM-dd
??*/
?public?static?String?getStringDateShort()?{
??Date?currentTime?=?new?Date();
??SimpleDateFormat?formatter?=?new?SimpleDateFormat("yyyy-MM-dd");
??String?dateString?=?formatter.format(currentTime);
??return?dateString;
?}?
?/**
??*?获取时间?小时:分;秒?HH:mm:ss
??*?
??*?@return
??*/
?public?static?String?getTimeShort()?{
??SimpleDateFormat?formatter?=?new?SimpleDateFormat("HH:mm:ss");
??Date?currentTime?=?new?Date();
??String?dateString?=?formatter.format(currentTime);
??return?dateString;
?}?
?/**
??*?将长时间格式字符串转换为时间?yyyy-MM-dd?HH:mm:ss
??*?
??*?@param?strDate
??*?@return
??*/
?public?static?Date?strToDateLong(String?strDate)?{
??SimpleDateFormat?formatter?=?new?SimpleDateFormat("yyyy-MM-dd?HH:mm:ss");
??ParsePosition?pos?=?new?ParsePosition(0);
??Date?strtodate?=?formatter.parse(strDate,?pos);
??return?strtodate;
?}?
?/**
??*?将长时间格式时间转换为字符串?yyyy-MM-dd?HH:mm:ss
??*?
??*?@param?dateDate
??*?@return
??*/
?public?static?String?dateToStrLong(java.util.Date?dateDate)?{
??SimpleDateFormat?formatter?=?new?SimpleDateFormat("yyyy-MM-dd?HH:mm:ss");
??String?dateString?=?formatter.format(dateDate);
??return?dateString;
?}?
?/**
??*?将短时间格式时间转换为字符串?yyyy-MM-dd
??*?
??*?@param?dateDate
??*?@param?k
??*?@return
??*/
?public?static?String?dateToStr(java.util.Date?dateDate)?{
??SimpleDateFormat?formatter?=?new?SimpleDateFormat("yyyy-MM-dd");
??String?dateString?=?formatter.format(dateDate);
??return?dateString;
?}?
?/**
??*?将短时间格式字符串转换为时间?yyyy-MM-dd?
??*?
??*?@param?strDate
??*?@return
??*/
?public?static?Date?strToDate(String?strDate)?{
??SimpleDateFormat?formatter?=?new?SimpleDateFormat("yyyy-MM-dd");
??ParsePosition?pos?=?new?ParsePosition(0);
??Date?strtodate?=?formatter.parse(strDate,?pos);
??return?strtodate;
?}?
?/**
??*?得到现在时间
??*?
??*?@return
??*/
?public?static?Date?getNow()?{
??Date?currentTime?=?new?Date();
??return?currentTime;
?}?
?/**
??*?提取一个月中的最后一天
??*?
??*?@param?day
??*?@return
??*/
?public?static?Date?getLastDate(long?day)?{
??Date?date?=?new?Date();
??long?date_3_hm?=?date.getTime()?-?3600000?*?34?*?day;
??Date?date_3_hm_date?=?new?Date(date_3_hm);
??return?date_3_hm_date;
?}?
?/**
??*?得到现在时间
??*?
??*?@return?字符串?yyyyMMdd?HHmmss
??*/
?public?static?String?getStringToday()?{
??Date?currentTime?=?new?Date();
??SimpleDateFormat?formatter?=?new?SimpleDateFormat("yyyyMMdd?HHmmss");
??String?dateString?=?formatter.format(currentTime);
??return?dateString;
?}?
?/**
??*?得到现在小时
??*/
?public?static?String?getHour()?{
??Date?currentTime?=?new?Date();
??SimpleDateFormat?formatter?=?new?SimpleDateFormat("yyyy-MM-dd?HH:mm:ss");
??String?dateString?=?formatter.format(currentTime);
??String?hour;
??hour?=?dateString.substring(11,?13);
??return?hour;
?}?
?/**
??*?得到现在分钟
??*?
??*?@return
??*/
?public?static?String?getTime()?{
??Date?currentTime?=?new?Date();
??SimpleDateFormat?formatter?=?new?SimpleDateFormat("yyyy-MM-dd?HH:mm:ss");
??String?dateString?=?formatter.format(currentTime);
??String?min;
??min?=?dateString.substring(14,?16);
??return?min;
?}?
?/**
??*?根据用户传入的时间表示格式,返回当前时间的格式?如果是yyyyMMdd,注意字母y不能大写。
??*?
??*?@param?sformat
??*????????????yyyyMMddhhmmss
??*?@return
??*/
?public?static?String?getUserDate(String?sformat)?{
??Date?currentTime?=?new?Date();
??SimpleDateFormat?formatter?=?new?SimpleDateFormat(sformat);
??String?dateString?=?formatter.format(currentTime);
??return?dateString;
?}?
?/**
??*?二个小时时间间的差值,必须保证二个时间都是"HH:MM"的格式,返回字符型的分钟
??*/
?public?static?String?getTwoHour(String?st1,?String?st2)?{
??String[]?kk?=?null;
??String[]?jj?=?null;
??kk?=?st1.split(":");
??jj?=?st2.split(":");
??if?(Integer.parseInt(kk[0])?<?Integer.parseInt(jj[0]))
???return?"0";
??else?{
???double?y?=?Double.parseDouble(kk[0])?+?Double.parseDouble(kk[1])?/?60;
???double?u?=?Double.parseDouble(jj[0])?+?Double.parseDouble(jj[1])?/?60;
???if?((y?-?u)?>?0)
????return?y?-?u?+?"";
???else
????return?"0";
??}
?}?
?/**
??*?得到二个日期间的间隔天数
??*/
?public?static?String?getTwoDay(String?sj1,?String?sj2)?{
??SimpleDateFormat?myFormatter?=?new?SimpleDateFormat("yyyy-MM-dd");
??long?day?=?0;
??try?{
???java.util.Date?date?=?myFormatter.parse(sj1);
???java.util.Date?mydate?=?myFormatter.parse(sj2);
???day?=?(date.getTime()?-?mydate.getTime())?/?(24?*?60?*?60?*?1000);
??}?catch?(Exception?e)?{
???return?"";
??}
??return?day?+?"";
?}?
?/**
??*?时间前推或后推分钟,其中JJ表示分钟.
??*/
?public?static?String?getPreTime(String?sj1,?String?jj)?{
??SimpleDateFormat?format?=?new?SimpleDateFormat("yyyy-MM-dd?HH:mm:ss");
??String?mydate1?=?"";
??try?{
???Date?date1?=?format.parse(sj1);
???long?Time?=?(date1.getTime()?/?1000)?+?Integer.parseInt(jj)?*?60;
???date1.setTime(Time?*?1000);
???mydate1?=?format.format(date1);
??}?catch?(Exception?e)?{
??}
??return?mydate1;
?}?
?/**
??*?得到一个时间延后或前移几天的时间,nowdate为时间,delay为前移或后延的天数
??*/
?public?static?String?getNextDay(String?nowdate,?String?delay)?{
??try{
??SimpleDateFormat?format?=?new?SimpleDateFormat("yyyy-MM-dd");
??String?mdate?=?"";
??Date?d?=?strToDate(nowdate);
??long?myTime?=?(d.getTime()?/?1000)?+?Integer.parseInt(delay)?*?24?*?60?*?60;
??d.setTime(myTime?*?1000);
??mdate?=?format.format(d);
??return?mdate;
??}catch(Exception?e){
???return?"";
??}
?}?
?/**
??*?判断是否润年
??*?
??*?@param?ddate
??*?@return
??*/
?public?static?boolean?isLeapYear(String?ddate)?{?
??/**
???*?详细设计:?1.被400整除是闰年,否则:?2.不能被4整除则不是闰年?3.能被4整除同时不能被100整除则是闰年
???*?3.能被4整除同时能被100整除则不是闰年
???*/
??Date?d?=?strToDate(ddate);
??GregorianCalendar?gc?=?(GregorianCalendar)?Calendar.getInstance();
??gc.setTime(d);
??int?year?=?gc.get(Calendar.YEAR);
??if?((year?%?400)?==?0)
???return?true;
??else?if?((year?%?4)?==?0)?{
???if?((year?%?100)?==?0)
????return?false;
???else
????return?true;
??}?else
???return?false;
?}?
?/**
??*?返回美国时间格式?26?Apr?2006
??*?
??*?@param?str
??*?@return
??*/
?public?static?String?getEDate(String?str)?{
??SimpleDateFormat?formatter?=?new?SimpleDateFormat("yyyy-MM-dd");
??ParsePosition?pos?=?new?ParsePosition(0);
??Date?strtodate?=?formatter.parse(str,?pos);
??String?j?=?strtodate.toString();
??String[]?k?=?j.split("?");
??return?k[2]?+?k[1].toUpperCase()?+?k[5].substring(2,?4);
?}?
?/**
??*?获取一个月的最后一天
??*?
??*?@param?dat
??*?@return
??*/
?public?static?String?getEndDateOfMonth(String?dat)?{//?yyyy-MM-dd
??String?str?=?dat.substring(0,?8);
??String?month?=?dat.substring(5,?7);
??int?mon?=?Integer.parseInt(month);
??if?(mon?==?1?||?mon?==?3?||?mon?==?5?||?mon?==?7?||?mon?==?8?||?mon?==?10?||?mon?==?12)?{
???str?+=?"31";
??}?else?if?(mon?==?4?||?mon?==?6?||?mon?==?9?||?mon?==?11)?{
???str?+=?"30";
??}?else?{
???if?(isLeapYear(dat))?{
????str?+=?"29";
???}?else?{
????str?+=?"28";
???}
??}
??return?str;
?}?
?/**
??*?判断二个时间是否在同一个周
??*?
??*?@param?date1
??*?@param?date2
??*?@return
??*/
?public?static?boolean?isSameWeekDates(Date?date1,?Date?date2)?{
??Calendar?cal1?=?Calendar.getInstance();
??Calendar?cal2?=?Calendar.getInstance();
??cal1.setTime(date1);
??cal2.setTime(date2);
??int?subYear?=?cal1.get(Calendar.YEAR)?-?cal2.get(Calendar.YEAR);
??if?(0?==?subYear)?{
???if?(cal1.get(Calendar.WEEK_OF_YEAR)?==?cal2.get(Calendar.WEEK_OF_YEAR))
????return?true;
??}?else?if?(1?==?subYear?&&?11?==?cal2.get(Calendar.MONTH))?{
???//?如果12月的最后一周横跨来年第一周的话则最后一周即算做来年的第一周
???if?(cal1.get(Calendar.WEEK_OF_YEAR)?==?cal2.get(Calendar.WEEK_OF_YEAR))
????return?true;
??}?else?if?(-1?==?subYear?&&?11?==?cal1.get(Calendar.MONTH))?{
???if?(cal1.get(Calendar.WEEK_OF_YEAR)?==?cal2.get(Calendar.WEEK_OF_YEAR))
????return?true;
??}
??return?false;
?}?
?/**
??*?产生周序列,即得到当前时间所在的年度是第几周
??*?
??*?@return
??*/
?public?static?String?getSeqWeek()?{
??Calendar?c?=?Calendar.getInstance(Locale.CHINA);
??String?week?=?Integer.toString(c.get(Calendar.WEEK_OF_YEAR));
??if?(week.length()?==?1)
???week?=?"0"?+?week;
??String?year?=?Integer.toString(c.get(Calendar.YEAR));
??return?year?+?week;
?}?
?/**
??*?获得一个日期所在的周的星期几的日期,如要找出2002年2月3日所在周的星期一是几号
??*?
??*?@param?sdate
??*?@param?num
??*?@return
??*/
?public?static?String?getWeek(String?sdate,?String?num)?{
??//?再转换为时间
??Date?dd?=?VeDate.strToDate(sdate);
??Calendar?c?=?Calendar.getInstance();
??c.setTime(dd);
??if?(num.equals("1"))?//?返回星期一所在的日期
???c.set(Calendar.DAY_OF_WEEK,?Calendar.MONDAY);
??else?if?(num.equals("2"))?//?返回星期二所在的日期
???c.set(Calendar.DAY_OF_WEEK,?Calendar.TUESDAY);
??else?if?(num.equals("3"))?//?返回星期三所在的日期
???c.set(Calendar.DAY_OF_WEEK,?Calendar.WEDNESDAY);
??else?if?(num.equals("4"))?//?返回星期四所在的日期
???c.set(Calendar.DAY_OF_WEEK,?Calendar.THURSDAY);
??else?if?(num.equals("5"))?//?返回星期五所在的日期
???c.set(Calendar.DAY_OF_WEEK,?Calendar.FRIDAY);
??else?if?(num.equals("6"))?//?返回星期六所在的日期
???c.set(Calendar.DAY_OF_WEEK,?Calendar.SATURDAY);
??else?if?(num.equals("0"))?//?返回星期日所在的日期
???c.set(Calendar.DAY_OF_WEEK,?Calendar.SUNDAY);
??return?new?SimpleDateFormat("yyyy-MM-dd").format(c.getTime());
?}?
?/**
??*?根据一个日期,返回是星期几的字符串
??*?
??*?@param?sdate
??*?@return
??*/
?public?static?String?getWeek(String?sdate)?{
??//?再转换为时间
??Date?date?=?VeDate.strToDate(sdate);
??Calendar?c?=?Calendar.getInstance();
??c.setTime(date);
??//?int?hour=c.get(Calendar.DAY_OF_WEEK);
??//?hour中存的就是星期几了,其范围?1~7
??//?1=星期日?7=星期六,其他类推
??return?new?SimpleDateFormat("EEEE").format(c.getTime());
?}
?public?static?String?getWeekStr(String?sdate){
??String?str?=?"";
??str?=?VeDate.getWeek(sdate);
??if("1".equals(str)){
???str?=?"星期日";
??}else?if("2".equals(str)){
???str?=?"星期一";
??}else?if("3".equals(str)){
???str?=?"星期二";
??}else?if("4".equals(str)){
???str?=?"星期三";
??}else?if("5".equals(str)){
???str?=?"星期四";
??}else?if("6".equals(str)){
???str?=?"星期五";
??}else?if("7".equals(str)){
???str?=?"星期六";
??}
??return?str;
?}?
?/**
??*?两个时间之间的天数
??*?
??*?@param?date1
??*?@param?date2
??*?@return
??*/
?public?static?long?getDays(String?date1,?String?date2)?{
??if?(date1?==?null?||?date1.equals(""))
???return?0;
??if?(date2?==?null?||?date2.equals(""))
???return?0;
??//?转换为标准时间
??SimpleDateFormat?myFormatter?=?new?SimpleDateFormat("yyyy-MM-dd");
??java.util.Date?date?=?null;
??java.util.Date?mydate?=?null;
??try?{
???date?=?myFormatter.parse(date1);
???mydate?=?myFormatter.parse(date2);
??}?catch?(Exception?e)?{
??}
??long?day?=?(date.getTime()?-?mydate.getTime())?/?(24?*?60?*?60?*?1000);
??return?day;
?}?
?/**
??*?形成如下的日历?,?根据传入的一个时间返回一个结构?星期日?星期一?星期二?星期三?星期四?星期五?星期六?下面是当月的各个时间
??*?此函数返回该日历第一行星期日所在的日期
??*?
??*?@param?sdate
??*?@return
??*/
?public?static?String?getNowMonth(String?sdate)?{
??//?取该时间所在月的一号
??sdate?=?sdate.substring(0,?8)?+?"01";?
??//?得到这个月的1号是星期几
??Date?date?=?VeDate.strToDate(sdate);
??Calendar?c?=?Calendar.getInstance();
??c.setTime(date);
??int?u?=?c.get(Calendar.DAY_OF_WEEK);
??String?newday?=?VeDate.getNextDay(sdate,?(1?-?u)?+?"");
??return?newday;
?}?
?/**
??*?取得数据库主键?生成格式为yyyymmddhhmmss+k位随机数
??*?
??*?@param?k
??*????????????表示是取几位随机数,可以自己定
??*/?
?public?static?String?getNo(int?k)?{?
??return?getUserDate("yyyyMMddhhmmss")?+?getRandom(k);
?}?
?/**
??*?返回一个随机数
??*?
??*?@param?i
??*?@return
??*/
?public?static?String?getRandom(int?i)?{
??Random?jjj?=?new?Random();
??//?int?suiJiShu?=?jjj.nextInt(9);
??if?(i?==?0)
???return?"";
??String?jj?=?"";
??for?(int?k?=?0;?k?<?i;?k++)?{
???jj?=?jj?+?jjj.nextInt(9);
??}
??return?jj;
?}?
?/**
??*?
??*?@param?args
??*/
?public?static?boolean?RightDate(String?date)?{?
??SimpleDateFormat?sdf?=?new?SimpleDateFormat("yyyy-MM-dd?hh:mm:ss");
??;
??if?(date?==?null)
???return?false;
??if?(date.length()?>?10)?{
???sdf?=?new?SimpleDateFormat("yyyy-MM-dd?hh:mm:ss");
??}?else?{
???sdf?=?new?SimpleDateFormat("yyyy-MM-dd");
??}
??try?{
???sdf.parse(date);
??}?catch?(ParseException?pe)?{
???return?false;
??}
??return?true;
?}?
?/***************************************************************************
??*?//nd=1表示返回的值中包含年度?//yf=1表示返回的值中包含月份?//rq=1表示返回的值中包含日期?//format表示返回的格式?1
??*?以年月日中文返回?2?以横线-返回?//?3?以斜线/返回?4?以缩写不带其它符号形式返回?//?5?以点号.返回
??**************************************************************************/
?public?static?String?getStringDateMonth(String?sdate,?String?nd,?String?yf,?String?rq,?String?format)?{
??Date?currentTime?=?new?Date();
??SimpleDateFormat?formatter?=?new?SimpleDateFormat("yyyy-MM-dd");
??String?dateString?=?formatter.format(currentTime);
??String?s_nd?=?dateString.substring(0,?4);?//?年份
??String?s_yf?=?dateString.substring(5,?7);?//?月份
??String?s_rq?=?dateString.substring(8,?10);?//?日期
??String?sreturn?=?"";
??roc.util.MyChar?mc?=?new?roc.util.MyChar();
??if?(sdate?==?null?||?sdate.equals("")?||?!mc.Isdate(sdate))?{?//?处理空值情况
???if?(nd.equals("1"))?{
????sreturn?=?s_nd;
????//?处理间隔符
????if?(format.equals("1"))
?????sreturn?=?sreturn?+?"年";
????else?if?(format.equals("2"))
?????sreturn?=?sreturn?+?"-";
????else?if?(format.equals("3"))
?????sreturn?=?sreturn?+?"/";
????else?if?(format.equals("5"))
?????sreturn?=?sreturn?+?".";
???}
???//?处理月份
???if?(yf.equals("1"))?{
????sreturn?=?sreturn?+?s_yf;
????if?(format.equals("1"))
?????sreturn?=?sreturn?+?"月";
????else?if?(format.equals("2"))
?????sreturn?=?sreturn?+?"-";
????else?if?(format.equals("3"))
?????sreturn?=?sreturn?+?"/";
????else?if?(format.equals("5"))
?????sreturn?=?sreturn?+?".";
???}
???//?处理日期
???if?(rq.equals("1"))?{
????sreturn?=?sreturn?+?s_rq;
????if?(format.equals("1"))
?????sreturn?=?sreturn?+?"日";
???}
??}?else?{
???//?不是空值,也是一个合法的日期值,则先将其转换为标准的时间格式
???sdate?=?roc.util.RocDate.getOKDate(sdate);
???s_nd?=?sdate.substring(0,?4);?//?年份
???s_yf?=?sdate.substring(5,?7);?//?月份
???s_rq?=?sdate.substring(8,?10);?//?日期
???if?(nd.equals("1"))?{
????sreturn?=?s_nd;
????//?处理间隔符
????if?(format.equals("1"))
?????sreturn?=?sreturn?+?"年";
????else?if?(format.equals("2"))
?????sreturn?=?sreturn?+?"-";
????else?if?(format.equals("3"))
?????sreturn?=?sreturn?+?"/";
????else?if?(format.equals("5"))
?????sreturn?=?sreturn?+?".";
???}
???//?处理月份
???if?(yf.equals("1"))?{
????sreturn?=?sreturn?+?s_yf;
????if?(format.equals("1"))
?????sreturn?=?sreturn?+?"月";
????else?if?(format.equals("2"))
?????sreturn?=?sreturn?+?"-";
????else?if?(format.equals("3"))
?????sreturn?=?sreturn?+?"/";
????else?if?(format.equals("5"))
?????sreturn?=?sreturn?+?".";
???}
???//?处理日期
???if?(rq.equals("1"))?{
????sreturn?=?sreturn?+?s_rq;
????if?(format.equals("1"))
?????sreturn?=?sreturn?+?"日";
???}
??}
??return?sreturn;
?}?
?public?static?String?getNextMonthDay(String?sdate,?int?m)?{
??sdate?=?getOKDate(sdate);
??int?year?=?Integer.parseInt(sdate.substring(0,?4));
??int?month?=?Integer.parseInt(sdate.substring(5,?7));
??month?=?month?+?m;
??if?(month?<?0)?{
???month?=?month?+?12;
???year?=?year?-?1;
??}?else?if?(month?>?12)?{
???month?=?month?-?12;
???year?=?year?+?1;
??}
??String?smonth?=?"";
??if?(month?<?10)
???smonth?=?"0"?+?month;
??else
???smonth?=?""?+?month;
??return?year?+?"-"?+?smonth?+?"-10";
?}?
?public?static?String?getOKDate(String?sdate)?{
??if?(sdate?==?null?||?sdate.equals(""))
???return?getStringDateShort();?
??if?(!VeStr.Isdate(sdate))?{
???sdate?=?getStringDateShort();
??}
??//?将“/”转换为“-”
??sdate?=?VeStr.Replace(sdate,?"/",?"-");
??//?如果只有8位长度,则要进行转换
??if?(sdate.length()?==?8)
???sdate?=?sdate.substring(0,?4)?+?"-"?+?sdate.substring(4,?6)?+?"-"?+?sdate.substring(6,?8);
??SimpleDateFormat?formatter?=?new?SimpleDateFormat("yyyy-MM-dd");
??ParsePosition?pos?=?new?ParsePosition(0);
??Date?strtodate?=?formatter.parse(sdate,?pos);
??String?dateString?=?formatter.format(strtodate);
??return?dateString;
?}?
?public?static?void?main(String[]?args)?throws?Exception?{
??try?{
???//System.out.print(Integer.valueOf(getTwoDay("2006-11-03?12:22:10",?"2006-11-02?11:22:09")));
??}?catch?(Exception?e)?{
???throw?new?Exception();
??}
??//System.out.println("sss");
?}
}