java FormatUtil常用工具類

import java.math.BigDecimal;
import java.text.DecimalFormat;
import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * クラス名	:Format <br>
 * 機能概要	:フォーマット系部品 <br>
 */
public class Format {

    /**
     * <p>時間フォーマット</p>
     */
    private static ThreadLocal<SimpleDateFormat> timeFormat = new ThreadLocal<SimpleDateFormat>();

    /**
     * <p>日付(年月日・曜日・時間)フォーマット</p>
     */
    private static ThreadLocal<SimpleDateFormat> longDateFormat = new ThreadLocal<SimpleDateFormat>();
    //sxs start
    /** カンマ編集のフォーマット */
    private static final String FORMAT_KANMA = "##,###,###,###,##0.00";

    //sxs end

    /** 全角スペース */
    private static final String strWideSpace = " ";

    /** 半角スペース */
    private static final String STRING_EMPTY = "";


    /**
     * <p>[機 能] フォーマット</p>
     * <p>[説 明] Dateを文字列にフォーマットする。</p>
     * <p>[備 考] dd形式にフォーマットする。</p>
     * @param date 日付文字列
     * @param format フォーマット
     * @return String フォーマットされた文字列
     */
     private static final String toDateString(Date date, SimpleDateFormat format){
         try{
             return format.format(date);
         } catch(NullPointerException e){
             return "";
         } catch(IllegalArgumentException e){
             return "";
         }
     }

	//変換メソッド
	//long,Integer,String

	//カンマ編集
	public static String addComma(long lnum) {
		return new DecimalFormat(",###").format(lnum);
	}
	public static String addComma(String str) {
		return new DecimalFormat(",###").format(stringToLong(str));
	}

	//カンマ削除
	public static String delComma(String str) {
		return str.replaceAll(",", "");
	}

	// Integer → String
	public  static String integerToString(Integer value){
		return value.toString();
	}

	// String → Integer
	public static Integer strToInteger(String value){
		return new Integer((int)Long.valueOf(delComma(value)).longValue());
	}

	// String → long
	public static long stringToLong(String value){
		return Long.valueOf(delComma(value)).longValue();
	}

	// long → String
	public static String longToString(long value){
		return Long.toString(value);
	}

	// Integer → int
	public static int integerToInt(Integer value){
		return value.intValue();
	}

	// Integer → long
	public static long integerToLong(Integer value){
		return value.longValue();
	}

	// long → Integer
	public static Integer longToInteger(long value){
		return new Integer((int)value);
	}

	// Character → long
	public static long characterToLong(Character value){
		return Long.parseLong(value.toString());
	}

	/** YYYYMMDD(String) → YYYY年MM月DD日(String) */
	public static String convDateStringChar(String value){
		StringBuffer wrkReturn = new StringBuffer();
		if(value.length() == 8){
			wrkReturn.append(value.substring(0, 4) + "年");
			wrkReturn.append(value.substring(4, 6) + "月");
			wrkReturn.append(value.substring(6) + "日");
		}else if(value.length() == 6){
			wrkReturn.append(value.substring(0, 4) + "年");
			wrkReturn.append(value.substring(4) + "月");
		}else if(value.length() == 4){
			wrkReturn.append(value.substring(0, 2) + "月");
			wrkReturn.append(value.substring(2) + "日");
		} else {

		}
		return wrkReturn.toString();
	}

    /** 郵便番號のハイフン編集 */
     public static final String zipCodeAddHyphen(String zipCode){

    	 StringBuffer returnZipCode = new StringBuffer();
    	 if(4 <= zipCode.length()){
    		 returnZipCode.append(zipCode.substring(0,3));
    		 returnZipCode.append("-");
    		 returnZipCode.append(zipCode.substring(3));
    	 }

    	 return returnZipCode.toString();
     }

     /** 郵便番號のハイフン削除 */
      public static final String zipCodeDelHyphen(String zipCode){

     	 return zipCode.replaceAll("-", "");
      }

	/** YYYY年MM月DD日(String) → YYYYMMDD(String) */
	public static String convDateStringNum(String value){
		return value.replaceAll("年", "").replaceAll("月", "").replaceAll("日", "");
	}


    /**
     * <p>[機 能] 日付変換(日付→時刻)</p>
     * <p>[説 明] Date型から時刻を表す文字列(HHmmss)への変換。</p>
     * <p>[備 考] なし</p>
     * @param time 日付文字列
     * @return String フォーマットされた時刻文字列
     */
    public static final String toTimeString(Date time) {
    	if (timeFormat.get() == null) {
    		SimpleDateFormat dateFormat = new SimpleDateFormat("HHmmss");
    		timeFormat.set(dateFormat);
    	}
        return toDateString(time, timeFormat.get());
    }

    /**
     * <p>[機 能] 日付変換(日付→文字列)</p>
     * <p>[説 明] Date型から日付を表す文字列(yyyy/MM/dd HH:mm:ss)への変換。</p>
     * <p>[備 考] yyyy/MM/dd HH:mm:ss形式にフォーマットする。</p>
     * @param date 日付文字列
     * @return String フォーマットされた文字列
     */
     public static final String toDateStringLongDate(Date date){
     	if (longDateFormat.get() == null) {
    		SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
    		longDateFormat.set(dateFormat);
    	}
        return toDateString(date,longDateFormat.get());
     }

     /**
      * <p>[機 能] アドゼロ,YYYYMMDD結合</p>
      * <p>[説 明] YYYYMMDDの形式に結合。文字數が足らない場合、0を追加する</p>
      * <p>			パラメタのどれか1つがnullならばnullを返す。</p>
      * <p>[備 考] なし</p>
      * @param String 年
      * @param String 月
      * @param String 日
      * @return String 結合された文字列(YYYYMMDD)
      */
     public static final String toYYYYMMDD(String yyyy, String mm, String dd){

    	 DecimalFormat mmDdFormat = new DecimalFormat("00");
    	 StringBuffer strBuffer = new StringBuffer();
		if("".equals(yyyy) || "".equals(mm) || "".equals(dd)){
			return null;
		}
    	 // YYYYMMDD形式に結合
    	 String yyyyMmDd = strBuffer.append(yyyy + mmDdFormat.format(stringToLong(mm)) + mmDdFormat.format(stringToLong(dd))).toString();
    	 return yyyyMmDd;
     }

     /**
      * <p>[機 能] 全角スペース変換</p>
      * <p>[説 明] 文字列がnullおよび長さ=0の場合、全角空白を返す</p>
      * <p>[備 考] なし</p>
      * @param String 変換文字列
      * @return String 空白文字列
      */
     public static final String changeSpace(String strIn) {
    	 if(strIn == null) {
    		 return strWideSpace;
    		 }

    	 if("".equals(strIn.trim())) {
    		 return strWideSpace;
    		 }
    		 return strIn;
     }

     /**
      * <p>[機 能] 空文字変換</p>
      * <p>[説 明] 文字列が全角空白の場合、空文字を返す</p>
      * <p>[備 考] なし</p>
      * @param String 空白文字列
      * @return String 変換文字列
      */
     public static final String reChangeSpace(String strIn) {
    	 if(strWideSpace.equals(strIn)){
    		 return "";
    	 }
    		 return strIn;
     }

     /**
      * <p>[機 能] Null変換</p>
      * <p>[説 明] 文字列が全角空白の場合、Nullを返す</p>
      * <p>[備 考] なし</p>
      * @param String 空白文字列
      * @return String 変換文字列
      */
     public static final String changeNull(String strIn) {
    	 if(strWideSpace.equals(strIn)){
    		 return null;
    	 }
    		 return strIn;
     }

 	//sxs start
     /**
      * カンマ編集した金額を返す。<br>
      * "(##,###,###,###,##0.##)"の形式で返す。<br>
      * 入力金額がない場合は空文字を返す。<br>
      * @param BigDecimal 金額
      * @return カンマ編集した金額
      */

	public static String numberFormat(BigDecimal bd) {

		if (bd == null || STRING_EMPTY.equals(bd.toString())) {
			return STRING_EMPTY;
		}

		DecimalFormat bf = new DecimalFormat(FORMAT_KANMA);
		return bf.format(bd);
	}

	//sxs end

	/** スレッドローカル(フォーマット文字列:カンマ) */
	private static ThreadLocal<DecimalFormat> COMMA_FORMAT = new ThreadLocal<DecimalFormat>();

	/**
	 * カンマ編集した値を返す。<br>
	 * 小數以下の値は、38桁まで有効
	 *
	 * @param str
	 * @return
	 */
	public static String numberFormat(String str) {

		if (str == null || "".equals(str)) {
			return str;
		}

		DecimalFormat decimalFormat = COMMA_FORMAT.get();
		if (decimalFormat == null) {
			decimalFormat = new DecimalFormat("##,###,###,###,##0");
			decimalFormat.setMaximumFractionDigits(38);
			COMMA_FORMAT.set(decimalFormat);
		}

		BigDecimal value = new BigDecimal(str);

		return decimalFormat.format(value);
	}

}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章