/*
 * MosP - Mind Open Source Project         http://www.mosp.jp/
 * Copyright (C) 1987-2009 MIND Co., Ltd.  http://www.e-mind.co.jp/
 * 
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of the GNU General Public License
 * as published by the Free Software Foundation; either version 2
 * of the License, or (at your option) any later version.
 * 
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 * 
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
 */
package jp.mosp.common;

import java.util.Date;

import java.util.Collections;
import java.util.Comparator;

import java.util.List;

import jp.mosp.common.part.DatePart;
import jp.mosp.common.part.NumberPart;
import jp.mosp.common.part.StringPart;
import jp.mosp.common.part.TimePart;

public class CommonUtility {

	/**
	 * フラグ変換（String→boolean）
	 * @param target 対象String
	 * @param trueflag trueを返す条件
	 * @param falseflag falseを返す条件
	 * @return 結果 どちらでもない場合false
	 */
	public boolean convFlagToBoolean(String target, String trueflag, String falseflag) {
		return StringPart.convFlagToBoolean(target, trueflag, falseflag);
	}

	/**
	 * フラグ変換（String→boolean）
	 * @param target 対象String
	 * @param trueflag trueを返す条件
	 * @return 結果
	 */
	public boolean convFlagToBoolean(String target, String trueflag) {
		return StringPart.convFlagToBoolean(target, trueflag);
	}

	/**
	 * フラグ変換（int→boolean）
	 * @param target 対象int
	 * @param trueflag trueを返す条件
	 * @return 結果
	 */
	public boolean convFlagToBoolean(int target, int trueflag) {
		return StringPart.convFlagToBoolean(target, trueflag);
	}

	/**
	 * フラグ変換（boolean→String）
	 * @param isTrue 	trueの場合のString
	 * @param isFalse	falseの場合のString
	 * @param flag 		true or false
	 * @return	String 	判別名称
	 */
	public String returnStringFlag(String isTrue, String isFalse, boolean flag) {
		return StringPart.returnStringFlag(isTrue, isFalse, flag);
	}

	/**
	 * フラグ変換（boolean→String）
	 * @param flag 	true or false
	 * @return true…OFF、false…ON
	 */
	public String returnTrueIsOff(boolean flag) {
		return StringPart.returnTrueIsOff(flag);
	}

	/**
	 * フラグ変換（boolean→String）
	 * @param flag 	true or false
	 * @return true…ON、false…OFF
	 */
	public String returnTrueIsOn(boolean flag) {
		return StringPart.returnTrueIsOn(flag);
	}

	/**
	 * 名称存在チェック
	 * @param value			対象コード
	 * @param aryTarget		対象名称を含む配列
	 * @return
	 * <p>
	 * 名称が存在する場合true、そうでない場合false
	 * </p>
	 */
	public boolean checkNameExist(String value, String[][] aryTarget) {
		String target = getCodeName(value, aryTarget);
		if (target.equals(value)) {
			return false;
		}
		return true;
	}

	/**
	 * リストのソート
	 * @param list		対象リスト
	 * @param comp		対象Comparator
	 */
	public void sortList(List<?> list, Comparator<Object> comp) {
		Collections.sort(list, comp);
	}

	/**
	 * リストのソート
	 * @param list			対象リスト
	 * @param comp			対象Comparator
	 * @param isAscending	true...昇順、false...降順
	 */
	public void sortList(List<?> list, Comparator<Object> comp, boolean isAscending) {
		if (isAscending) {
			sortList(list, comp);
		} else {
			Collections.sort(list, Collections.reverseOrder(comp));
		}
	}

	/*文字列関連*/

	/**
	 * StringのNull、長さチェック
	 * @param str		対象String
	 * @return
	 * <p>Nullもしくは長さが0の場合true、そうでない場合false</p>
	 */
	public boolean isNull(String str) {
		return StringPart.isNull(str);
	}

	/**
	 * StringのNotNullチェック
	 * @param str		対象String
	 * @return
	 * <p>Nullもしくは長さが0以外の場合true、そうでない場合false</p>
	 */
	public boolean isNotNull(String str) {
		return StringPart.isNotNull(str);
	}

	/**
	 * 配列→カンマ区切りの文字列
	 * @param array		対象一次元配列
	 * @return
	 */
	public String convArrayToFormattedByComma(String[] array) {
		return StringPart.convArrayToFormattedByComma(array);
	}

	/**
	 * 郵便番号分離メソッド
	 * @param	code 郵便番号
	 * @return 前3桁
	 */
	public String divideYubinCodeForward(String code) {
		return StringPart.divideYubinCodeForward(code);
	}

	/**
	 * 郵便番号分離メソッド
	 * @param	code 郵便番号
	 * @return 後4桁
	 */
	public String divideYubinCodeBackward(String code) {
		return StringPart.divideYubinCodeBackward(code);
	}

	/**
	 * ハイフン分割メソッド
	 * @param code 対象データ
	 * @param hyphen ハイフン数
	 * @return 分割配列<br>
	 * ハイフンとハイフンの間に何も無い場合、
	 * 配列に「""」が代入される。
	 * 
	 */
	public String[] divideByHyphen(String code, int hyphen) {
		return StringPart.divideByHyphen(code, hyphen);
	}

	/**
	 * ハイフン分割メソッド
	 * @param code 対象データ
	 * @return 分割配列<br>
	 * ハイフンとハイフンの間に何も無い場合、
	 * 配列に「""」が代入される。<br>
	 * ハイフンで文字列が終わる場合、ハイフンの前の文字列までを、
	 * 配列にする。
	 */
	public String[] divideByHyphen(String code) {
		return StringPart.divideByHyphen(code);
	}

	/**
	 * カンマ分割メソッド
	 * @param code 対象データ
	 * @param comma カンマ数
	 * @return 分割配列<br>
	 * カンマとカンマの間に何も無い場合、
	 * 配列に「""」が代入される。
	 * 
	 */
	public String[] divideByComma(String code, int comma) {
		return StringPart.divideByComma(code, comma);
	}

	/**
	 * カンマ分割メソッド
	 * @param code 対象データ
	 * @return 分割配列<br>
	 * カンマとカンマの間に何も無い場合、
	 * 配列に「""」が代入される。
	 */
	public String[] divideByComma(String code) {
		return StringPart.divideByComma(code);
	}

	/**
	 * カンマ結合メソッド
	 * @param array		対象配列
	 * @return	string	結合文字列
	 */
	public String combineByComma(String[] array) {
		return StringPart.combineByComma(array);
	}

	/**
	 * スラッシュ分割メソッド
	 * @param code		対象コード
	 * @return　分割配列
	 */
	public String[] divideBySlash(String code) {
		return StringPart.divideBySlash(code);
	}

	/**
	 * スラッシュ分割メソッド
	 * @param code		対象コード
	 * @param slash		スラッシュ数
	 * @return　分割配列
	 */
	public String[] divideBySlash(String code, int slash) {
		return StringPart.divideBySlash(code, slash);
	}

	/**
	 * nullに初期値をセット
	 * @param obj
	 * @param init
	 * @return	string 変換文字列
	 */
	public String convNullToInitialValue(Object obj, String init) {
		return StringPart.convNullToInitialValue(obj, init);
	}
	/**
	 * 文字列を分割する
	 * @param Sspl1
	 * @param Sspl2
	 * @param Sspl3
	 * @return	分割文字列
	 */
	public static String splitStrings(String Sspl1, String Sspl2, int Sspl3) {
		return StringPart.splitStrings(Sspl1, Sspl2, Sspl3);
	}

	/**
	 * 数字フォーマット
	 * @param number 数字
	 * @param max 整数最大桁数
	 * @param min 小数点以下最大桁数
	 * @return 時間(文字列)
	 */
	public String getNumberString(double number, int integer, int fraction) {
		return NumberPart.getNumberString(number, integer, fraction);
	}

	/**
	 * 改行表示処理
	 * @param aStr 改行対象文字列
	 * @return 改行後文字列
	 */
	public static String brHTML(String aStr) {
		return StringPart.brHTML(aStr);
	}

	/**
	 * ゼロ付の数字から整数へ変換
	 * @param number ゼロ付数字
	 * @return 整数
	 */
	public String removeZero(String number) {
		return StringPart.removeZero(number);
	}

	/**
	 * 整数からゼロ付の数字へ変換
	 * @param number
	 * @return String	数字（0~9）→（00~09）
	 */
	public String addZero(int number) {
		return StringPart.addZero(number);
	}

	/**
	 * 整数からゼロ付の数字へ変換
	 * @param number
	 * @return String	数字（0~9）→（00~09）
	 */
	public String addZero(String number) {
		return StringPart.addZero(number);
	}

	/**
	 * 仮名文字列を半角カナへ統一
	 * @param input		対象仮名文字列
	 * @return	半角カナ変換後文字列
	 */
	public String toHankakuKana(String input) {
		return StringPart.toHankakuKana(input);
	}

	/**
	 * 全角スペースを半角スペースへ変換
	 * @param input		全角スペースが含まれる文字列
	 * @return	全角スペースを半角スペースへ変換後の文字列
	 */
	public String to1byteSpace(String input) {
		return StringPart.to1byteSpace(input);
	}

	/*配列関連*/

	/**
	 * 配列次元変換
	 * @param ary1D		変換元一次元配列
	 * @return	変換後二次元配列
	 */
	public String[][] convArrayDimension(String[] ary1D) {
		return StringPart.convArrayDimension(ary1D);
	}

	/**
	 * 配列次元変換
	 * @param ary2D		変換元二次元配列
	 * @return	変換後一次元配列
	 */
	public String[] convArrayDimension(String[][] ary2D) {
		return StringPart.convArrayDimension(ary2D);
	}

	/**
	 * 一次元配列生成
	 * @param str1		対象要素１
	 * @param str2		対象要素２
	 * @return　生成配列
	 */
	public String[] createArray(String str1, String str2) {
		return StringPart.createArray(str1, str2);
	}

	/**
	 * 空白プルダウン取得
	 * @return  空白プルダウン用配列
	 */
	public String[][] getBlankArray() {
		return StringPart.getBlankArray();
	}

	/**
	 * 在職/退職リスト取得
	 * @return 在職/退職リスト
	 */
	public String[][] getRetirementFlagArrayAll() {
		// 配列の作成
		return addArrayFirstRowSpace(getRetirementFlagArray());
	}

	/**
	 * 在職/退職リスト取得（空欄無し）
	 * @return 在職/退職リスト
	 */
	public String[][] getRetirementFlagArray() {
		return StringPart.getRetirementFlagArray();
	}

	/**
	 * 名称取得
	 * @param code  取得対象コード
	 * @return コード名称
	 */
	public String getCodeName(String code, String[][] array) {
		return StringPart.getCodeName(code, array);
	}

	/**
	 * コード取得
	 * @param name  取得対象コード
	 * @param array  取得対象配列
	 * @return コード名称
	 */
	public String getCodeValue(String name, String[][] array) {
		return StringPart.getCodeValue(name, array);
	}

	/**
	 * 年プルダウン取得
	 * @param year 基準年
	 * @return 年プルダウン用文字列配列
	 */
	public String[][] getYearArray(int year) {
		return StringPart.getYearArray(year);
	}

	/**
	 * 年プルダウン取得
	 * @param year 基準年
	 * @param former 過去
	 * @param further 未来
	 * @return 年プルダウン用文字列配列
	 */
	public String[][] getYearArray(int year, int former, int further) {
		return StringPart.getYearArray(year, former, further);
	}

	/**
	 * 月プルダウン取得
	 * @return 月プルダウン用文字列配列
	 */
	public String[][] getMonthArray() {
		return StringPart.getMonthArray();
	}

	/**
	 * 日プルダウン取得
	 * @return 月プルダウン用文字列配列
	 */
	public String[][] getDayArray() {
		return StringPart.getDayArray();
	}

	/**
	 * 時間プルダウン取得
	 * @param hour          開始時
	 * @param minute        開始分
	 * @param count         データ数
	 * @param interval      データ間隔(分)
	 * @param isValueMinute 分設定フラグ(true：valueは分単位、false：valueは時間文字列)
	 * @return 時間プルダウン用文字列配列
	 */
	public String[][] getTimeArray(int hour, int minute, int count, int interval, boolean isValueMinute) {
		return StringPart.getTimeArray(hour, minute, count, interval, isValueMinute);
	}

	/**
	 * 数値プルダウン取得
	 * @param start		開始値
	 * @param end		終了値
	 * @param interval	間隔
	 * @return 数値プルダウン用文字列配列
	 */
	public String[][] getCountArray(int start, int end, int interval) {
		return StringPart.getCountArray(start, end, interval);
	}

	/**
	 * プルダウン行除去
	 * @param target 除去対象プルダウン配列
	 * @param value 除去対象行値
	 * @return 除去後プルダウン
	 */
	public String[][] removeArrayRow(String[][] target, String value) {
		return StringPart.removeArrayRow(target, value);
	}

	/**
	 * プルダウンの先頭行に空白を追加
	 * @param target 対象プルダウン配列
	 * @return 追加後プルダウン
	 */
	public String[][] addArrayFirstRowSpace(String[][] target) {
		return StringPart.addArrayFirstRowSpace(target);
	}

	/**
	 * プルダウンの先頭行に任意の値を追加
	 * @param target 対象プルダウン配列
	 * @param code 対象行コード
	 * @param value 対象行表示値
	 * @return aryNew	生成配列
	 */
	public String[][] addArrayFirstRowValue(String[][] target, String code, String value) {
		return StringPart.addArrayFirstRowValue(target, code, value);
	}

	/**
	 * プルダウンの最終行に任意の値を追加
	 * @param target 対象プルダウン配列
	 * @param code 対象行コード
	 * @param value 対象行表示値
	 * @return aryNew	生成配列
	 */
	public String[][] addArrayLastRowValue(String[][] target, String code, String value) {
		return StringPart.addArrayLastRowValue(target, code, value);
	}

	/**
	 * 二次元配列を一次元配列へ変換
	 * @param ary 対象二次元配列
	 * @param d 選択No.
	 * @return 選択一次元配列
	 * @throws Exception
	 */	
	public String[] separateArrayList(String[][] ary, int d) {
		return StringPart.separateArrayList(ary, d);
	}

	/**
	 * 配列同士の結合
	 * @param frontarray 前方n行2列
	 * @param behindarray 後方n行2列
	 * @return	String[][]	結合配列
	 */
	public String[][] combineArray(String[][] frontarray, String[][] behindarray) {
		return StringPart.combineArray(frontarray, behindarray);
	}

	/**
	 * 配列同士の結合
	 * @param frontarray 前方n行2列
	 * @param centerarray 中間n行2列
	 * @param behindarray 後方n行2列
	 * @return	String[][]	結合配列
	 */
	public String[][] combineArray(String[][] frontarray, String[][] centerarray, String[][] behindarray) {
		return StringPart.combineArray(frontarray, centerarray, behindarray);
	}

	/**
	 * 配列同士の結合
	 * @param list
	 * @return
	 */
	public String[][] combineArray(List<String[][]> list) {
		return StringPart.combineArray(list);
	}

	/**
	 * 有り／無しリスト
	 * @return [0]…無し、[1]…有り
	 */
	public String[][] getExistenceArray() {
		return StringPart.getExistenceArray();
	}

	/**
	 * 有り／無しリスト
	 * @return [0]…無、[1]…有
	 */
	public String[][] getExistenceShortArray() {
		return StringPart.getExistenceShortArray();
	}

	/**
	 * 同一配列チェック
	 * @param ary1		対象配列１
	 * @param ary2		対象配列２
	 * @return
	 * <p>
	 * 配列が一緒であればtrue、そうでない場合false
	 * </p>
	 */
	public boolean checkArraysEquals(String[] ary1, String[] ary2) {
		return StringPart.checkArraysEquals(ary1, ary2);
	}

	/**
	 * 一次元配列をListへ
	 * @param array
	 * @return
	 */
	public List<String> arrayToList(String[] array) {
		return StringPart.arrayToList(array);
	}

	/*時間関連*/
	
	/**
	 * int時刻の時間をString時に変換
	 * @param time
	 * @return	string	時間（時）
	 */
	public String convIntegerTimeToStringHour(int time) {
		return TimePart.convIntegerTimeToStringHour(time);
	}

	/**
	 * int時刻の分をString分に変換
	 * @param time
	 * @return	string	時間（分）
	 */
	public String convIntegerTimeToStringMinutes(int time) {
		return TimePart.convIntegerTimeToStringMinutes(time);
	}

	/**
	 * String時刻の時間をString時に変換
	 * @param time HH:MM
	 * @return HH
	 */
	public String convStringTimeToStringHour(String time) {
		return TimePart.convStringTimeToStringHour(time);
	}

	/**
	 * String時刻の分をString分に変換
	 * @param time HH:MM
	 * @return MM
	 */
	public String convStringTimeToStringMinutes(String time) {
		return TimePart.convStringTimeToStringMinutes(time);
	}

	/**
	 * 時刻変換（int→String）
	 * @param time int
	 * @return HH:MM
	 */
	public String convIntegerTimeToStringTime(int time) {
		return TimePart.convIntegerTimeToStringTime(time);
	}

	/**
	 * 時刻変換（int→String）
	 * @param time int
	 * @return HH時MM分
	 */
	public String convIntegerTimeToJPTime(int time) {
		return TimePart.convIntegerTimeToJPTime(time);
	}

	/**
	 * 時刻変換（String→int）
	 * @param time 時刻（HH:MM）
	 * @return int	時刻（0時からの経過分数）
	 */
	public int convStringTimeToIntegerTime(String time) {
		return TimePart.convStringTimeToIntegerTime(time);
	}

	/**
	 * 時刻変換（String→int）
	 * @param hour 時
	 * @param min 分
	 * @return int	時刻（0時からの経過分数）
	 */
	public int convStringTimeToIntegerTime(String hour, String min) {
		return TimePart.convStringTimeToIntegerTime(hour, min);
	}

	/**
	 * 時刻変換（String→String）
	 * @param hour 時
	 * @param min 分
	 * @return	HH:mm
	 */
	public String convStringTimeFormatted(String hour, String min) {
		return TimePart.convStringTimeFormatted(hour, min);
	}

	/**
	 * 時間変換（int→double）
	 * @param time int
	 * @return hh.mm <br>分はそのまま
	 * 				[例] 65分→1.05
	 */
	public double convIntegerTimeToDoubleTime(int time) {
		return TimePart.convIntegerTimeToDoubleTime(time);
	}

	/**
	 * 時間変換（int→String）
	 * <p>[例] 90分→1.5</p>
	 * <p>15分単位の場合のみ利用してください。</p>
	 * @param time int
	 * @return hh.mm 
	 */
	public String convIntegerMinToStringHour(int time) {
		return TimePart.convIntegerMinToStringHour(time);
	}

	/**
	 * 時間変換（int→String）
	 * @param time int
	 * @return HH時間MM分
	 */
	public String convIntegerTimeToJPHours(int time) {
		return TimePart.convIntegerTimeToJPHours(time);
	}

	/**
	 * 時間フォーマット
	 * @param hour 時間
	 * @return 時間(文字列)
	 */
	public String getHourString(double hour) {
		return TimePart.getHourString(hour);
	}

	/*日付関連*/
	
	/**
	 * 月差取得
	 * @param date1 終了月
	 * @param date2 開始月
	 * @return 月差(date1 - date2)
	 * @throws Exception
	 */
	public int getMonthRemainder(Date date1, Date date2) {
		return DatePart.getMonthRemainder(date1, date2);
	}

	/**
	 * 日数取得
	 * @param date1 終了日
	 * @param date2 開始日
	 * @return 日数(date1 - date2)
	 * @throws Exception
	 */
	public long getDateRemainder(Date date1, Date date2) {
		return DatePart.getDateRemainder(date1, date2);
	}

	/**
	 * 年操作
	 * @param date   操作日付
	 * @param amount 増減月数
	 * @return 操作後日付
	 */
	public Date addYear(Date date, int amount) {
		return DatePart.addYear(date, amount);
	}

	/**
	 * 月操作
	 * @param date   操作日付
	 * @param amount 増減月数
	 * @return 操作後日付
	 */
	public Date addMonth(Date date, int amount) {
		return DatePart.addMonth(date, amount);
	}

	/**
	 * 日操作
	 * @param date   操作日付
	 * @param amount 増減日数
	 * @return 操作後日付
	 */
	public Date addDay(Date date, int amount) {
		return DatePart.addDay(date, amount);
	}

	/**
	 * 日操作
	 * @param date   操作日付
	 * @param amount 増減日数
	 * @return 操作後日付
	 */
	public Date addDay(Date date, String amount) {
		return DatePart.addDay(date, amount);
	}

	/**
	 * 日付取得（String）
	 * @return 日付初期値
	 */
	public Date getInitialDate() { 
		return DatePart.getInitialDate();
	}

	/**
	 * システム日付取得
	 * @return システム日付
	 */
	public Date getSystemDate() {
		return DatePart.getSystemDate();
	}

	/**
	 * システム日付取得
	 * @return システム日付
	 */
	public Date getNowDate() {
		return DatePart.getNowDate();
	}

	/**
	 * 月初日取得
	 * @param year  取得対象年
	 * @param month 取得対象月
	 * @return 月初日
	 */
	public Date getFirstDateOfMonth(String year, String month) {
		return DatePart.getFirstDateOfMonth(year, month);
	}

	/**
	 * 月初日取得
	 * @param year  取得対象年
	 * @param month 取得対象月
	 * @return 月初日
	 */
	public Date getFirstDateOfMonth(int year, int month) {
		return DatePart.getFirstDateOfMonth(year, month);
	}

	/**
	 * 月最終日取得
	 * @param year  取得対象年
	 * @param month 取得対象月
	 * @return 月最終日
	 */
	public Date getLastDateOfMonth(String year, String month) {
		return DatePart.getLastDateOfMonth(year, month);
	}

	/**
	 * 月最終日取得
	 * @param year  取得対象年
	 * @param month 取得対象月
	 * @return 月最終日
	 */
	public Date getLastDateOfMonth(int year, int month) {
		return DatePart.getLastDateOfMonth(year, month);
	}

	/**
	 * 年月取得
	 * @param year  年
	 * @param month 月
	 * @return 年月
	 */
	public Date getYearMonth(String year, String month) {
		return DatePart.getYearMonth(year, month);
	}

	/**
	 * 時間取得
	 * @param time 時間
	 * @return 日付
	 * @throws ParseException 
	 */
	public Date getTimeAsDate(String time) {
		return DatePart.getTimeAsDate(time);
	}

	/**
	 * 選択日を含む一週間の開始日取得
	 * @param date			選択日
	 * @param dayofweek		開始曜日
	 * @return 選択日を含む一週間の開始日
	 */
	public Date getFirstDateOfWeek(Date date, int dayofweek) {
		return DatePart.getFirstDateOfWeek(date, dayofweek);
	}

	/**
	 * 選択日を含む一週間の終了日取得
	 * @param date			選択日
	 * @param dayofweek		開始曜日
	 * @return 選択日を含む一週間の終了日
	 */
	public Date getLastDateOfWeek(Date date, int dayofweek) {
		return DatePart.getLastDateOfWeek(date, dayofweek);
	}

	/**
	 * 日付変換（String→Date）
	 * @param yyyymmdd	yyyy/mm/dd
	 * @return date
	 */
	public Date convStringDateToDate(String yyyymmdd) {
		return DatePart.convStringDateToDate(yyyymmdd);
	}

	/**
	 * 日付変換（String→Date）
	 * @param yyyymmdd yyyyMMdd
	 * @return date
	 */
	public Date convStringBaseDateToDate(String yyyymmdd) {
		return DatePart.convStringBaseDateToDate(yyyymmdd);
	}

	/**
	 * 日付変換(String→String[])
	 * @param yyyymmdd 対象日付(yyyy/mm/dd)
	 * @return 日付配列
	 */
	public String[] convStringDateToArray(String yyyymmdd) {
		return DatePart.convStringDateToArray(yyyymmdd);
	}

	/**
	 * 日付変換（int→Date）
	 * @param yyyymmdd
	 * @return date
	 */
	public Date convIntegerDateToDate(int yyyymmdd) {
		return DatePart.convIntegerDateToDate(yyyymmdd);
	}

	/**
	 * 日付変換(int→Date)
	 * @param year
	 * @param month
	 * @param day
	 * @return	Date	対象年月日
	 */
	public Date getDate(int year, int month, int day) {
		return DatePart.getDate(year, month, day); 
	}

	/**
	 * 日付変換(String→Date)
	 * @param year
	 * @param month
	 * @param day
	 * @return	Date	対象年月日
	 */
	public Date getDate(String year, String month, String day) {
		return DatePart.getDate(year, month, day); 
	}

	/**
	 * 日付変換（String→Date）
	 * @param yyyymmdd	yyyy-mm-dd
	 * @return date
	 */
	public Date convHyphenDateToDate(String yyyymmdd) {
		return DatePart.convHyphenDateToDate(yyyymmdd);
	}

	/**
	 * 日付変換（String→String）
	 * @param yyyymmdd	yyyy-mm-dd
	 * @return yyyy年M月d日
	 */
	public String convHyphenDateToJPShortDate(String yyyymmdd) {
		return DatePart.convHyphenDateToJPShortDate(yyyymmdd);
	}

	/**
	 * 日付変換（String→String）
	 * @param yyyymmdd	yyyy-mm-dd
	 * @return yyyy年MM月dd日
	 */
	public String convHyphenDateToJPDate(String yyyymmdd) {
		return DatePart.convHyphenDateToJPDate(yyyymmdd);
	}

	/**
	 * 日付変換（String→String）
	 * @param yyyymmdd	yyyy-mm-dd
	 * @return yyyy/MM/dd
	 */
	public String convHyphenDateToFormatted(String yyyymmdd) {
		return DatePart.convHyphenDateToFormatted(yyyymmdd);
	}

	/**
	 * 日付変換（String→String）
	 * @param yyyymmdd	yyyy/mm/dd
	 * @return yyyy-MM-dd
	 */
	public String convFormattedToHyphen(String yyyymmdd) {
		return DatePart.convFormattedToHyphen(yyyymmdd);
	}

	/**
	 * 日付取得（String）
	 * @return	9999-99-99 00:00:00
	 */
	public String getDateTime() { 
		return DatePart.getDateTime();
	}

	/**
	 * 日付取得（String）
	 * @param date
	 * @return 9999-99-99 99:99:99
	 */
	public String getDateTime(Date date) { 
		return DatePart.getDateTime(date);
	}

	/**
	 * 期間中判断
	 * @param startDate		開始日
	 * @param endDate		終了日
	 * @param targetDate	対象日
	 * @return
	 * <p>
	 * 開始日と終了日の期間に対象日が存在する場合true、<br>
	 * そうでない場合false
	 * </p>
	 */
	public boolean inPeriod(Date startDate, Date endDate, Date targetDate) {
		return DatePart.inPeriod(startDate, endDate, targetDate);
	}

	/**
	 * 日付変換(int→String[])
	 * @param date 対象日付
	 * @return 日付配列
	 */
	public String[] convIntegerDateToArray(int date) {
		return DatePart.convIntegerDateToArray(date);
	}

	/**
	 * 日付変換(int→String)
	 * @param date 対象日付
	 * @return yyyy年mm月dd日
	 */
	public String convIntegerDateToJPDate(int date) {
		return DatePart.convIntegerDateToJPDate(date);
	}

	/**
	 * 日付変換(int→String)
	 * @param date 対象日付
	 * @return yyyy/mm/dd
	 */
	public String convIntegerDateToStringFormatted(int date) {
		return DatePart.convIntegerDateToStringFormatted(date);
	}

	/**
	 * 日付変換(String→int)
	 * @param yyyy 年
	 * @param mm 月
	 * @param dd 日
	 * @return yyyymmdd
	 */
	public int convStringDateToInteger(String yyyy, String mm, String dd) {
		return DatePart.convStringDateToInteger(yyyy, mm, dd);
	}

	/**
	 * 日付変換(String→int)
	 * @param yyyy-mm-dd
	 * @return yyyymmdd
	 */
	public int convStringDateToInteger(String yyyymmdd) {
		return DatePart.convStringDateToInteger(yyyymmdd);		
	}

	/**
	 * 日付変換(int→String)
	 * @param yyyy
	 * @param mm
	 * @param dd
	 * @return	string	日付（yyyymmdd）
	 */
	public String convIntegerToStringDate(int yyyy, int mm, int dd) {
		return DatePart.convIntegerToStringDate(yyyy, mm, dd);
	}

	/**
	 * 日付変換(Date→int)
	 * @param date
	 * @return yyyymmdd
	 */
	public int convDateToInteger(Date date) {
		return DatePart.convDateToInteger(date);
	}

	/**
	 * 日付変換(Date→String)
	 * @param date
	 * @return yyyymmdd
	 */
	public String convDateToString(Date date) {
		return DatePart.convDateToString(date);
	}

	/**
	 * 日付変換(Date→String)
	 * @param date
	 * @return yyyy-mm
	 */
	public String convDateToStringYearMonth(Date date) {
		return DatePart.convDateToStringYearMonth(date);
	}

	/**
	 * 日付変換(Date→String)
	 * @param date
	 * @return yyyy-m
	 */
	public String convDateToStringYearMonthShort(Date date) {
		return DatePart.convDateToStringYearMonthShort(date);
	}

	/**
	 * 日付変換(Date→String)
	 * @param date
	 * @return yyyy-mm-dd
	 */
	public String convDateFormattedByHyphen(Date date) {
		return DatePart.convDateFormattedByHyphen(date);
	}

	/**
	 * 日付変換(Date→String)
	 * @param date
	 * @return yyyy/mm/dd
	 */
	public String convDateFormatted(Date date) {
		return DatePart.convDateFormatted(date);
	}

	/**
	 * 日付変換(Date→String)
	 * @param date
	 * @return yyyy,mm,dd
	 */
	public String convDateFormattedByComma(Date date) {
		return DatePart.convDateFormattedByComma(date);
	}

	/**
	 * 日付変換(Date→String)
	 * @param date	date
	 * @return yyyy年MM月dd日
	 */
	public String convDateToFormatDateJP(Date date) {
		return DatePart.convDateToFormatDateJP(date);
	}

	/**
	 * 日付変換(Date→String)
	 * @param date	date
	 * @return yyyy年M月d日
	 */
	public String convDateToFormatDateJPShort(Date date) {
		return DatePart.convDateToFormatDateJPShort(date);
	}

	/**
	 * 日付変換(String→String)
	 * @param yyyy 年
	 * @param mm 月
	 * @param dd 日
	 * @return yyyy/mm/dd
	 */
	public String convStringDateFormatted(String yyyy, String mm, String dd) {
		return DatePart.convStringDateFormatted(yyyy, mm, dd);
	}

	/**
	 * 日付変換(String→String)
	 * @param yyyy 年
	 * @param mm 月
	 * @param dd 日
	 * @return yyyy,mm,dd
	 */
	public String convStringDateFormattedByComma(String yyyy, String mm, String dd) {
		return DatePart.convStringDateFormattedByComma(yyyy, mm, dd);
	}

	/**
	 * 日付変換(String→String)
	 * @param yyyy 年
	 * @param mm 月
	 * @param dd 日
	 * @return yyyy-mm-dd
	 */
	public String convStringDateFormattedByHyphen(String yyyy, String mm, String dd) {
		return DatePart.convStringDateFormattedByHyphen(yyyy, mm, dd);
	}

	/**
	 * 日付変換(int→String)
	 * @param yyyy 年
	 * @param mm 月
	 * @param dd 日
	 * @return yyyy-mm-dd
	 */
	public String convDateFormattedByHyphen(int yyyy, int mm, int dd) {
		return DatePart.convDateFormattedByHyphen(yyyy, mm, dd);
	}

}
