【轉】JAVA時間類型操作
/**
?日期類
?*?@date???2003-12-04
?*? @version ?1.0
? */
import ?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");
?}
}
轉自:http://babyvox5th.javaeye.com/blog/263007?日期類
?*?@date???2003-12-04
?*? @version ?1.0
? */
import ?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");
?}
}
posted on 2009-11-10 10:23 聽風 閱讀(558) 評論(0) 編輯 收藏 所屬分類: JAVA