packagetest;importjava.util.*;importjava.text.*;importjava.util.Calendar;//日期类publicclassVeDate {/*** 获取现在时间
*
*@return返回时间类型 yyyy-MM-dd HH:mm:ss*/publicstaticDate getNowDate() {
Date currentTime=newDate();
SimpleDateFormat formatter=newSimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String dateString=formatter.format(currentTime);
ParsePosition pos=newParsePosition(8);
Date currentTime_2=formatter.parse(dateString, pos);returncurrentTime_2;
}/*** 获取现在时间
*
*@return返回字符串格式 yyyy-MM-dd HH:mm:ss*/publicstaticString getStringDate() {
Date currentTime=newDate();
SimpleDateFormat formatter=newSimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String dateString=formatter.format(currentTime);returndateString;
}/*** 将长时间格式字符串转换为时间 yyyy-MM-dd HH:mm:ss
*
*@paramstrDate
*@return*/publicstaticDate strToDate(String strDate) {
SimpleDateFormat formatter=newSimpleDateFormat("yyyy-MM-dd HH:mm:ss");
ParsePosition pos=newParsePosition(0);
Date strtodate=formatter.parse(strDate, pos);returnstrtodate;
}/*** 将时间格式时间转换为字符串 yyyy-MM-dd HH:mm:ss
*
*@paramdateDate
*@return*/publicstaticString dateToStrLong(java.util.Date dateDate) {
SimpleDateFormat formatter=newSimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String dateString=formatter.format(dateDate);returndateString;
}/*** 提取一个月中的最后一天
*
*@paramday
*@return*/publicstaticDate getLastDate(longday) {
Date date=newDate();longdate_3_hm=date.getTime()-3600000*34*day;
Date date_3_hm_date=newDate(date_3_hm);returndate_3_hm_date;
}/*** 得到现在时间
*
*@return*/publicstaticDate getNow() {
Date currentTime=newDate();returncurrentTime;
}/*** 得到现在时间
*
*@return字符串 yyyyMMdd HHmmss*/publicstaticString getStringToday() {
Date currentTime=newDate();
SimpleDateFormat formatter=newSimpleDateFormat("yyyyMMdd HHmmss");
String dateString=formatter.format(currentTime);returndateString;
}/*** 根据用户传入的时间表示格式,返回当前时间的格式 如果是yyyyMMdd,注意字母y不能大写。
*
*@paramsformat
* yyyyMMddhhmmss
*@return*/publicstaticString getUserDate(String sformat) {
Date currentTime=newDate();
SimpleDateFormat formatter=newSimpleDateFormat(sformat);
String dateString=formatter.format(currentTime);returndateString;
}/*** 二个小时时间间的差值,必须保证二个时间都是"HH:MM"的格式,返回字符型的分钟*/publicstaticString getTwoHour(String st1, String st2) {
String[] kk=null;
String[] jj=null;
kk=st1.split(":");
jj=st2.split(":");if(Integer.parseInt(kk[0])0)returny-u+"";elsereturn"0";
}
}/*** 得到二个日期间的间隔天数*/publicstaticString getTwoDay(String sj1, String sj2) {
SimpleDateFormat myFormatter=newSimpleDateFormat("yyyy-MM-dd");longday=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"";
}returnday+"";
}/*** 时间前推或后推分钟,其中JJ表示分钟.*/publicstaticString getPreTime(String sj1, String jj) {
SimpleDateFormat format=newSimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String mydate1="";try{
Date date1=format.parse(sj1);longTime=(date1.getTime()/1000)+Integer.parseInt(jj)*60;
date1.setTime(Time*1000);
mydate1=format.format(date1);
}catch(Exception e) {
}returnmydate1;
}/*** 得到一个时间延后或前移几天的时间,nowdate为时间,delay为前移或后延的天数*/publicstaticString getNextDay(String nowdate, String delay) {try{
SimpleDateFormat format=newSimpleDateFormat("yyyy-MM-dd");
String mdate="";
Date d=strToDate(nowdate);longmyTime=(d.getTime()/1000)+Integer.parseInt(delay)*24*60*60;
d.setTime(myTime*1000);
mdate=format.format(d);returnmdate;
}catch(Exception e) {return"";
}
}/*** 判断是否润年
*
*@paramddate
*@return*/publicstaticbooleanisLeapYear(String ddate) {/*** 详细设计: 1.被400整除是闰年,否则: 2.不能被4整除则不是闰年 3.能被4整除同时不能被100整除则是闰年
* 3.能被4整除同时能被100整除则不是闰年*/Date d=strToDate(ddate);
GregorianCalendar gc=(GregorianCalendar) Calendar.getInstance();
gc.setTime(d);intyear=gc.get(Calendar.YEAR);if((year%400)==0)returntrue;elseif((year%4)==0) {if((year%100)==0)returnfalse;elsereturntrue;
}elsereturnfalse;
}/*** 返回美国时间格式 26 Apr 2006
*
*@paramstr
*@return*/publicstaticString getEDate(String str) {
SimpleDateFormat formatter=newSimpleDateFormat("yyyy-MM-dd");
ParsePosition pos=newParsePosition(0);
Date strtodate=formatter.parse(str, pos);
String j=strtodate.toString();
String[] k=j.split("");returnk[2]+k[1].toUpperCase()+k[5].substring(2,4);
}/*** 获取一个月的最后一天
*
*@paramdat
*@return*/publicstaticString getEndDateOfMonth(String dat) {//yyyy-MM-ddString str=dat.substring(0,8);
String month=dat.substring(5,7);intmon=Integer.parseInt(month);if(mon==1||mon==3||mon==5||mon==7||mon==8||mon==10||mon==12) {
str+="31";
}elseif(mon==4||mon==6||mon==9||mon==11) {
str+="30";
}else{if(isLeapYear(dat)) {
str+="29";
}else{
str+="28";
}
}returnstr;
}/*** 判断二个时间是否在同一个周
*
*@paramdate1
*@paramdate2
*@return*/publicstaticbooleanisSameWeekDates(Date date1, Date date2) {
Calendar cal1=Calendar.getInstance();
Calendar cal2=Calendar.getInstance();
cal1.setTime(date1);
cal2.setTime(date2);intsubYear=cal1.get(Calendar.YEAR)-cal2.get(Calendar.YEAR);if(0==subYear) {if(cal1.get(Calendar.WEEK_OF_YEAR)==cal2
.get(Calendar.WEEK_OF_YEAR))returntrue;
}elseif(1==subYear&&11==cal2.get(Calendar.MONTH)) {//如果12月的最后一周横跨来年第一周的话则最后一周即算做来年的第一周if(cal1.get(Calendar.WEEK_OF_YEAR)==cal2
.get(Calendar.WEEK_OF_YEAR))returntrue;
}elseif(-1==subYear&&11==cal1.get(Calendar.MONTH)) {if(cal1.get(Calendar.WEEK_OF_YEAR)==cal2
.get(Calendar.WEEK_OF_YEAR))returntrue;
}returnfalse;
}/*** 产生周序列,即得到当前时间所在的年度是第几周
*
*@return*/publicstaticString 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));returnyear+week;
}/*** 获得一个日期所在的周的星期几的日期,如要找出2002年2月3日所在周的星期一是几号
*
*@paramsdate
*@paramnum
*@return*/publicstaticString 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);elseif(num.equals("2"))//返回星期二所在的日期c.set(Calendar.DAY_OF_WEEK, Calendar.TUESDAY);elseif(num.equals("3"))//返回星期三所在的日期c.set(Calendar.DAY_OF_WEEK, Calendar.WEDNESDAY);elseif(num.equals("4"))//返回星期四所在的日期c.set(Calendar.DAY_OF_WEEK, Calendar.THURSDAY);elseif(num.equals("5"))//返回星期五所在的日期c.set(Calendar.DAY_OF_WEEK, Calendar.FRIDAY);elseif(num.equals("6"))//返回星期六所在的日期c.set(Calendar.DAY_OF_WEEK, Calendar.SATURDAY);elseif(num.equals("0"))//返回星期日所在的日期c.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY);returnnewSimpleDateFormat("yyyy-MM-dd").format(c.getTime());
}/*** 根据一个日期,返回是星期几的字符串
*
*@paramsdate
*@return*/publicstaticString 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=星期六,其他类推returnnewSimpleDateFormat("EEEE").format(c.getTime());
}publicstaticString getWeekStr(String sdate) {
String str="";
str=VeDate.getWeek(sdate);if("1".equals(str)) {
str="星期日";
}elseif("2".equals(str)) {
str="星期一";
}elseif("3".equals(str)) {
str="星期二";
}elseif("4".equals(str)) {
str="星期三";
}elseif("5".equals(str)) {
str="星期四";
}elseif("6".equals(str)) {
str="星期五";
}elseif("7".equals(str)) {
str="星期六";
}returnstr;
}/*** 两个时间之间的天数
*
*@paramdate1
*@paramdate2
*@return*/publicstaticlonggetDays(String date1, String date2) {if(date1==null||date1.equals(""))return0;if(date2==null||date2.equals(""))return0;//转换为标准时间SimpleDateFormat myFormatter=newSimpleDateFormat("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) {
}longday=(date.getTime()-mydate.getTime())/(24*60*60*1000);returnday;
}/*** 形成如下的日历 , 根据传入的一个时间返回一个结构 星期日 星期一 星期二 星期三 星期四 星期五 星期六 下面是当月的各个时间
* 此函数返回该日历第一行星期日所在的日期
*
*@paramsdate
*@return*/publicstaticString getNowMonth(String sdate) {//取该时间所在月的一号sdate=sdate.substring(0,8)+"01";//得到这个月的1号是星期几Date date=VeDate.strToDate(sdate);
Calendar c=Calendar.getInstance();
c.setTime(date);intu=c.get(Calendar.DAY_OF_WEEK);
String newday=VeDate.getNextDay(sdate, (1-u)+"");returnnewday;
}/*** 取得数据库主键 生成格式为yyyymmddhhmmss+k位随机数
*
*@paramk:表示是取几位随机数*/publicstaticString getNo(intk) {returngetUserDate("yyyyMMddhhmmss")+getRandom(k);
}/*** 返回一个随机数
*
*@parami
*@return*/publicstaticString getRandom(inti) {
Random jjj=newRandom();if(i==0)return"";
String jj="";for(intk=0; k
jj=jj+jjj.nextInt(9);
}returnjj;
}/***
*@paramargs*/publicstaticbooleanRightDate(String date) {
SimpleDateFormat sdf;if(date==null)returnfalse;if(date.length()>10) {
sdf=newSimpleDateFormat("yyyy-MM-dd hh:mm:ss");
}else{
sdf=newSimpleDateFormat("yyyy-MM-dd");
}try{
sdf.parse(date);
}catch(ParseException pe) {returnfalse;
}returntrue;
}
}