|
|
TomcatでJavaプログラムを作成する場合の小手先技術集を紹介します。
|
//==========================================================================
// 文字列変換処理(JSP→Servlet:Shift-JIS→UNICODE)
//==========================================================================
private String strEncode(String strVal) throws UnsupportedEncodingException{
if(strVal==null){
return (null);
}else{
//Shift-JIS→UNICODE
return (new String(strVal.getBytes("ISO-8859-1"),"JISAutoDetect"));
}
}
|
|
//==========================================================================
//機能:日付チェック
// @日付範囲チェック
// A日付>現在日チェック
//入力:int year =年
// int month =月
// int day =日
//戻り値: "false" = 日付<=現在日、かつ日付範囲内(正常)
// "true" = 日付>現在日、もしくは日付範囲外(異常)
//==========================================================================
private String CheckDate(int year, int month, int day) {
int ileap = 0 ;
Calendar gre = Calendar.getInstance() ;
//---------------
// 大の月、小の月定義
//---------------
int Day_Tab[] []={
{0,31,28,31,30,31,30,31,31,30,31,30,31},
{0,31,29,31,30,31,30,31,31,30,31,30,31},
};
//現在日を取得
int gYear = gre.get(Calendar.YEAR) ;
int gMonth = gre.get(Calendar.MONTH) + 1 ;
int gDay = gre.get(Calendar.DATE) ;
if(gYear < year){
return "true" ;
}
if((month > 12) || (month < 1) || (day < 1)) {
return "true" ;
}
if(gYear == year) {
if(gMonth == month) {
if(gDay < day) {
return "true" ;
}
}else if(gMonth < month) {
return "true" ;
}
}
boolean bleap = (year % 4 == 0) && ((year % 100 != 0) || (year % 400 == 0)) ;
if(bleap == true) {
ileap = 1 ;
}
if(day > Day_Tab[ileap][month]) {
return "true" ;
}
return "false" ;
}
|
|
//==========================================================================
// 西暦から和暦を求める
//==========================================================================
public String SeirekiWareki(String strYYYYMMDD)
{
String strY;
String strM;
String strD;
String strBirthDate;
String strWarekiDate = "";
int iY;
int iM;
int iD;
strY = strYYYYMMDD.substring(0,4) ;
strM = strYYYYMMDD.substring(5,7) ;
strD = strYYYYMMDD.substring(8,10) ;
System.out.println("西暦→和暦変換:年月日=" + strY + strM + strD);
iY = Integer.parseInt(strY); //<-----年:文字列から数値へ変換
iM = Integer.parseInt(strM); //<-----月:文字列から数値へ変換
iD = Integer.parseInt(strD); //<-----日:文字列から数値へ変換
Calendar BirthDate = Calendar.getInstance();
BirthDate.set( iY ,iM ,iD);
System.out.println("iY ,iM ,iD="+ iY+ " " +iM +"
" +iD); //<-----試験のためにコンソール画面に結果を表示
//明治終了日
Calendar EndMeiDate = Calendar.getInstance();
EndMeiDate.set(1912, 7, 29);
//大正開始日
Calendar StartTaiDate = Calendar.getInstance();
StartTaiDate.set(1912, 7, 30);
//大正終了日
Calendar EndTaiDate = Calendar.getInstance();
EndTaiDate.set(1926, 12, 24);
//昭和開始日
Calendar StartShoDate = Calendar.getInstance();
StartShoDate.set(1926, 12, 25);
//昭和終了日
Calendar EndShoDate = Calendar.getInstance();
EndShoDate.set(1989, 1, 7);
//平成開始日
Calendar StartHeiDate = Calendar.getInstance();
StartHeiDate.set(1989, 1, 8);
int iWareki;
String StrNengou;
if(BirthDate.equals(EndMeiDate) == true) //<-----文字列の比較
{
iWareki = Integer.parseInt(strY) - 1867;
if(iWareki == 1)
{
StrNengou = "元年";
} else
{
StrNengou = Integer.toString(iWareki); //<-----数値から文字列へ変換
}
strWarekiDate = "明治" + StrNengou + "年" + strM + "月" + strD + "日";
} else if(BirthDate.before(EndMeiDate) == true)
{
iWareki = Integer.parseInt(strY) - 1867;
if(iWareki == 1)
{
StrNengou = "元年";
} else
{
StrNengou = Integer.toString(iWareki);
}
strWarekiDate = "明治" + StrNengou + "年" + strM + "月" + strD + "日";
} else if(BirthDate.equals(StartTaiDate) == true)
{
iWareki = Integer.parseInt(strY) - 1911;
if(iWareki == 1)
{
StrNengou = "元年";
} else
{
StrNengou = Integer.toString(iWareki);
}
strWarekiDate = "大正" + StrNengou + "年" + strM + "月" + strD + "日";
} else if(BirthDate.equals(EndTaiDate) == true)
{
iWareki = Integer.parseInt(strY) - 1911;
if(iWareki == 1)
{
StrNengou = "元年";
} else
{
StrNengou = Integer.toString(iWareki);
}
strWarekiDate = "大正" + StrNengou + "年" + strM + "月" + strD + "日";
} else if((BirthDate.after(StartTaiDate) == true) && (BirthDate.before(EndTaiDate) == true))
{
iWareki = Integer.parseInt(strY) - 1911;
if(iWareki == 1)
{
StrNengou = "元年";
} else
{
StrNengou = Integer.toString(iWareki);
}
strWarekiDate = "大正" + StrNengou + "年" + strM + "月" + strD + "日";
} else if(BirthDate.equals(StartShoDate) == true)
{
iWareki = Integer.parseInt(strY) - 1925;
if(iWareki == 1)
{
StrNengou = "元年";
} else
{
StrNengou = Integer.toString(iWareki);
}
strWarekiDate = "昭和" + StrNengou + "年" + strM + "月" + strD + "日";
} else if(BirthDate.equals(EndShoDate) == true)
{
iWareki = Integer.parseInt(strY) - 1925;
if(iWareki == 1)
{
StrNengou = "元年";
} else
{
StrNengou = Integer.toString(iWareki);
}
strWarekiDate = "昭和" + StrNengou + "年" + strM + "月" + strD + "日";
} else if((BirthDate.after(StartShoDate) == true) && (BirthDate.before(EndShoDate) == true))
{
iWareki = Integer.parseInt(strY) - 1925;
if(iWareki == 1)
{
StrNengou = "元年";
} else
{
StrNengou = Integer.toString(iWareki);
}
strWarekiDate = "昭和" + StrNengou + "年" + strM + "月" + strD + "日";
} else if(BirthDate.equals(StartHeiDate) == true)
{
iWareki = Integer.parseInt(strY) - 1988;
if(iWareki == 1)
{
StrNengou = "元年";
} else
{
StrNengou = Integer.toString(iWareki);
}
strWarekiDate = "平成" + StrNengou + "年" + strM + "月" + strD + "日";
} else if(BirthDate.after(StartHeiDate) == true)
{
iWareki = Integer.parseInt(strY) - 1988;
if(iWareki == 1)
{
StrNengou = "元";
} else
{
StrNengou = Integer.toString(iWareki);
}
strWarekiDate = "平成" + StrNengou + "年" + strM + "月" + strD + "日";
}
return ( strWarekiDate );
} |
|
//==========================================================================
// 干支を取得する。
//==========================================================================
/**
* 干支を取得するメソッド
*
* @return 干支を文字列で返す
* エラーの場合はNULLを返す
*/
public String getEto(String strYYYYMMDD)
{
// 十二支文字列情報
String etoTbl[] = {"子","丑","寅","卯","辰","巳","午","未","申","酉","戌","亥" };
// 年を整数化します
String strY;
strY = strYYYYMMDD.substring(0,4) ;
int yyyy = Integer.parseInt(strY);
int i = (yyyy + 8) % 12;
return etoTbl[i];
}
|
|
//==========================================================================
//数値が存在する年(YYYY),月(MM),日(DD)であるかどうかをチェックする
//==========================================================================
/**
*
* 大小の月、閏年などもチェックする
*
* @param yyyy チェックする西暦年数値
* @param mm チェックする月数値
* @param dd チェックする日数値
* @return チェック結果 true:正しい false:誤り
*/
private boolean checkDate(int yyyy, int mm, int dd){
// 年月日の正当性をチェック
//引数の文字列表現を返す
return checkDate(String.valueOf(yyyy)+"/"+String.valueOf(mm)+"/"+String.valueOf(dd));
}
|
|
//==========================================================================
// 文字列が存在する年(YYYY),月(MM),日(DD)であるかどうかをチェックする
//==========================================================================
/**
* 文字列が存在する年(YYYY),月(MM),日(DD)であるかどうかをチェックする
* 大小の月、閏年などもチェックする
*
* @param yyyy チェックする西暦年文字列
* @param mm チェックする月文字列
* @param dd チェックする日文字列
* @return チェック結果 true:正しい false:誤り
*/
private boolean checkDate(String yyyy, String mm, String dd){
return checkDate(yyyy+"/"+mm+"/"+dd);
}
|
|
//==========================================================================
// 大小の月、閏年などもチェックする
//==========================================================================
/*
*
* 大小の月、閏年などもチェックする
*
* @param date チェックする西暦年月日文字列
* 年と月と日は必ずスラッシュで区切られていること。
* @return チェック結果 true:正しい false:誤り
*/
private boolean checkDate(String date) {
// 前後の空白を除去
String d = new String(date.trim());
// 日付フォーマッターを定義
DateFormat df = DateFormat.getDateInstance();
// 解析レベルを厳密にする
df.setLenient(false);
try {
df.parse(d); // 入力年月日を解析
} catch(ParseException e) {
return false; // エラー
}
return true;
}
|
|