?? datefunc.java
字號:
/**
* Title: 通用組件開發(fā)
* Description: com.huiton.functions.DateFunc 日期函數(shù)
* Copyright: Copyright (c) 2001
* Company: huiton
* @author 吳劍
* @version 1.0
*/
package com.huiton.pub.dbx;
import java.util.*;
import java.text.*;
public class DateFunc {
// 年月日之間的分隔符,長度不得大于1
public static final String SEPARATOR = "/";
/**
* 獲取當前日期
* @return 表示當前日期的字符串,格式為 YYYY/MM/DD
*/
public String getDate() throws Exception
{
java.util.Date myDate = new java.util.Date();
String dateString = DateFormat.getDateInstance().format(myDate);
String myYear, myMonth, myDay;
myYear = dateString.substring(0,4);
myMonth = dateString.substring(5, dateString.lastIndexOf("-"));
myDay = dateString.substring(dateString.lastIndexOf("-")+1, dateString.length());
if(myMonth.length()==1)
myMonth = "0" + myMonth;
if(myDay.length()==1)
myDay = "0" + myDay;
return myYear + SEPARATOR + myMonth + SEPARATOR + myDay;
}
/**
* 計算兩個日期之間的差值,單位(年月日)由 datePart(yy, mm, dd)決定
* 日期格式:yyyy/mm/dd
* @param String datePart: 日期計算結(jié)果的單位(年月日 yy, mm, dd)
* @param String startDate: 開始日期,減數(shù)
* @param String endDate: 終止日期,被減數(shù)
* @return 整數(shù)值,單位由datePart參數(shù)確定
*/
public int dateDiff(String datePart, String startDate, String endDate)
throws Exception
{
// 日期格式檢查
if(!(checkDateFormat(startDate)||checkDateFormat(endDate)))
throw new Exception("日期格式錯誤!");
datePart = datePart.toLowerCase();
if(!(datePart=="yy"||datePart=="mm"||datePart=="dd"))
throw new Exception("日期單位參數(shù)錯誤!");
// 把日期的年、月、日部分轉(zhuǎn)換成整數(shù)
int startYear = Integer.valueOf(startDate.substring(0,4)).intValue();
int startMonth = Integer.valueOf(startDate.substring(5,7)).intValue();
int startDay = Integer.valueOf(startDate.substring(8,10)).intValue();
int endYear = Integer.valueOf(endDate.substring(0,4)).intValue();
int endMonth = Integer.valueOf(endDate.substring(5,7)).intValue();
int endDay = Integer.valueOf(endDate.substring(8,10)).intValue();
// 如果計算年差
if(datePart=="yy")
return endYear - startYear;
// 如果計算月差
else if(datePart=="mm")
return (endYear - startYear) * 12 + (endMonth - startMonth);
// 如果計算日差
else {
// 利用Calendar對象進行日期計算
Calendar startCal = Calendar.getInstance();
Calendar endCal = Calendar.getInstance();
startCal.set(startYear, intMonthValueToCalendarMonthValue(startMonth), startDay);
endCal.set(endYear, intMonthValueToCalendarMonthValue(endMonth), endDay);
int delta;
if(startCal.after(endCal))
delta = -1;
else
delta = 1;
int result;
for(result=0;!startCal.equals(endCal);result++)
startCal.add(Calendar.DATE, delta);
return result * delta;
}
}
/**
* 計算日期加法
* 日期格式:yyyy/mm/dd
* @param String datePart: 增加的單位(年月日;yy, mm, dd)
* @param String myDate: 日期,被加數(shù)
* @param int delta:增量
* @return 字符串形式的日期(yyyy/mm/dd)
*/
public String dateAdd(String datePart, String myDate, int delta)
throws Exception
{
// 日期格式檢查
if(!checkDateFormat(myDate))
throw new Exception("日期格式錯誤!");
datePart = datePart.toLowerCase();
if(!(datePart=="yy"||datePart=="mm"||datePart=="dd"))
throw new Exception("日期單位參數(shù)錯誤!");
// 把日期的年、月、日部分轉(zhuǎn)換成整數(shù)
int myYear = Integer.valueOf(myDate.substring(0,4)).intValue();
int myMonth = Integer.valueOf(myDate.substring(5,7)).intValue();
int myDay = Integer.valueOf(myDate.substring(8,10)).intValue();
// 利用Calendar對象進行日期計算
Calendar cal = Calendar.getInstance();
cal.set(myYear, intMonthValueToCalendarMonthValue(myMonth), myDay);
if(datePart=="yy")
cal.add(cal.YEAR, delta);
if(datePart=="mm")
cal.add(cal.MONTH, delta);
if(datePart=="dd")
cal.add(cal.DAY_OF_MONTH, delta);
// 把計算結(jié)果轉(zhuǎn)換成 yyyy/mm/dd 格式
String strYear = String.valueOf(cal.get(cal.YEAR));
String strMonth = String.valueOf(calendarMonthValueTointMonthValue(cal.get(cal.MONTH)));
String strDay = String.valueOf(cal.get(cal.DAY_OF_MONTH));
while(strMonth.length()<2)
strMonth = "0" + strMonth;
while(strDay.length()<2)
strDay = "0" + strDay;
return strYear + SEPARATOR + strMonth + SEPARATOR + strDay;
}
/**
* 返回指定日期指定部分(年月日)的整數(shù)值
* 日期格式:yyyy/mm/dd
* @param String datePart: 增加的單位(年月日;yy, mm, dd)
* @param String myDate: 日期
* @return 指定日期部分的整數(shù)值
*/
public int datePart(String datePart, String myDate)
throws Exception
{
// 日期格式檢查
if(!checkDateFormat(myDate))
throw new Exception("日期格式錯誤!");
datePart = datePart.toLowerCase();
if(!(datePart=="yy"||datePart=="mm"||datePart=="dd"))
throw new Exception("日期單位參數(shù)錯誤!");
// 返回結(jié)果
if(datePart=="yy")
return Integer.parseInt(myDate.substring(0, 4));
else if(datePart=="mm")
return Integer.parseInt(myDate.substring(5, 7));
else
return Integer.parseInt(myDate.substring(8, 10));
}
// 日期格式檢查函數(shù),格式正確返回TRUE,否則返回FALSE
protected boolean checkDateFormat(String myDate) {
// 返回結(jié)果
boolean result = true;
if(myDate.length()!=10) return false;
if(myDate.indexOf(SEPARATOR)!=4) return false;
if(myDate.lastIndexOf(SEPARATOR)!=7) return false;
int myYear = Integer.valueOf(myDate.substring(0,4)).intValue();
int myMonth = Integer.valueOf(myDate.substring(5,7)).intValue();
int myDay = Integer.valueOf(myDate.substring(8,10)).intValue();
result = result && (myYear>=1900 && myYear<=9999);
result = result && (myMonth>=1 && myMonth<=12);
result = result && (myDay>=1 && myDay<=31);
return result;
}
// 整數(shù)月份到Calendar對象中月份常數(shù)的轉(zhuǎn)換
protected int intMonthValueToCalendarMonthValue(int myMonth) {
int result;
switch(myMonth) {
case 1:
result = Calendar.JANUARY;
break;
case 2:
result = Calendar.FEBRUARY;
break;
case 3:
result = Calendar.MARCH;
break;
case 4:
result = Calendar.APRIL;
break;
case 5:
result = Calendar.MAY;
break;
case 6:
result = Calendar.JUNE;
break;
case 7:
result = Calendar.JULY;
break;
case 8:
result = Calendar.AUGUST;
break;
case 9:
result = Calendar.SEPTEMBER;
break;
case 10:
result = Calendar.OCTOBER;
break;
case 11:
result = Calendar.NOVEMBER;
break;
case 12:
result = Calendar.DECEMBER;
break;
default:
result = 99;
}
return result;
}
// Calendar對象中月份常數(shù)到整數(shù)月份的轉(zhuǎn)換
protected int calendarMonthValueTointMonthValue(int myMonth) {
int result;
switch(myMonth) {
case Calendar.JANUARY:
result = 1;
break;
case Calendar.FEBRUARY:
result = 2;
break;
case Calendar.MARCH:
result = 3;
break;
case Calendar.APRIL:
result = 4;
break;
case Calendar.MAY:
result = 5;
break;
case Calendar.JUNE:
result = 6;
break;
case Calendar.JULY:
result = 7;
break;
case Calendar.AUGUST:
result = 8;
break;
case Calendar.SEPTEMBER:
result = 9;
break;
case Calendar.OCTOBER:
result = 10;
break;
case Calendar.NOVEMBER:
result = 11;
break;
case Calendar.DECEMBER:
result = 12;
break;
default:
result = 99;
}
return result;
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -