开发施用的一些常用方法

开发使用的一些常用方法
/**
*常用工具包
*/
package com.cmsz.common.util;

import java.io.File;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;
import java.util.regex.Pattern;
import java.io.BufferedOutputStream;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;
import java.net.URLEncoder;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;
import java.text.DecimalFormat;
import java.text.NumberFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.zip.CRC32;
import java.util.zip.CheckedOutputStream;
import org.apache.tools.zip.ZipEntry;
import org.apache.tools.zip.ZipOutputStream;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;


/***************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************
* Copyright China-Mobile(SZ) 2005. All rights reserved.
*
* @file: Tools.java
* @date: 2005/09/28
* @brief: 常用工具包
* @author: fkueje001
* @version: 1.0.0 Other: Change Log: <author> <time> <version> <description> fkueje001 2005/09/28 1.0.0 create
**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/

public class Tools {
public static HashMap hs_transaction=new HashMap();

    /**
     * 返回系统当前年月日时分秒
     */
public static String lastRecFirstMonth()
{
Calendar car=Calendar.getInstance();
car.add(Calendar.MONTH, -1);
//car.add(Calendar.DATE, -1);
SimpleDateFormat format=new SimpleDateFormat("yyyy-MM-dd");
return format.format(car.getTime());
// return car.get(Calendar.YEAR)+"-"+(car.get(Calendar.MONTH)+1)+"-"+car.get(Calendar.DAY_OF_MONTH);
}

public static String currenctDate()
{
Calendar car=Calendar.getInstance();
//car.add(Calendar.MONTH, -1);
//car.add(Calendar.DATE, -1);
SimpleDateFormat format=new SimpleDateFormat("yyyy-MM-dd");
return format.format(car.getTime());
// return car.get(Calendar.YEAR)+"-"+(car.get(Calendar.MONTH)+1)+"-"+car.get(Calendar.DAY_OF_MONTH);
}
    public static String getDBDateTime() {     
        Calendar car=Calendar.getInstance(); 
        SimpleDateFormat format=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        return format.format(car.getTime());
    }

    /**
     * 返回系统当前日期
     */
    public static String getDBDate() {
      Calendar car=Calendar.getInstance(); 
          SimpleDateFormat format=new SimpleDateFormat("yyyy-MM-dd");
          return format.format(car.getTime());       
    }

    /**
     * 返回数据库处理结果
     */
    public static String getDBDate(String paramStr) {
        ConversionBean convert = new ConversionBean();
        String temp = "select " + paramStr + " from dual";
        convert.setSql(temp);
        temp = convert.getConversionBean();
        return temp;
    }

    /**
     * 返回系统当前日期
     */
    public static java.sql.Date getDate() {

        /**
         * Calendar calendar = Calendar.getInstance(); int day = calendar.get(Calendar.DAY_OF_MONTH); int month = calendar.get(Calendar.MONTH); int year = calendar.get(Calendar.YEAR); String date = year+"-"+month+"-"+day; return date;
         */
        java.util.Calendar calendar = java.util.Calendar.getInstance();
        // java.sql.Date dd=new java.sql.Date(calendar.get(Calendar.YEAR)-1900,calendar.get(Calendar.MONTH),calendar.get(Calendar.DAY_OF_MONTH));
        java.util.Date ss = new java.util.Date();
        java.sql.Date dd = new java.sql.Date(ss.getTime());

        /**
         * java.util.Date ss=new java.util.Date(); //java.sql.Date dd=java.sql.Date.valueOf(ss.toString()); getTime java.sql.Date dd=new java.sql.Date(ss.getTime()); System.out.println(ss.toString());
         */
        return dd;
    }

    /**
     * 空判断处理
     */
    public static boolean isEmpty(String input) {
        if (input == null) {
            return true;
        }
        if ("".equals(input.trim())) {
            return true;
        }
        return false;
    }

    /**
     * 校验是否数字
     */
    public static boolean isDigit(String input) {
        if (Tools.isEmpty(input)) {
            return false;
        }
        boolean reUse = false;
        for (int i = 0; i < input.length(); i++) {

            if (input.indexOf(".") == 0 || input.indexOf(".") == input.length()) {
                return false;
            }
            // 是否有多余的.
            if (input.substring(i, i + 1).equals(".")) {

                if (!reUse) {
                    reUse = true;
                    continue;
                } else {
                    return false;
                }

            }

            if (!Character.isDigit(input.charAt(i))) {
                return false;
            }
        }
        return true;
    }

    /**
     * double参数,进行给定精度格式化
     */
    public static String numberFormat(double parameter, int digit) {
        StringBuffer temp = new StringBuffer();
        for (int i = 0; i < digit; i++) {
            temp.append("0");
        }
        DecimalFormat df2 = new DecimalFormat("###0." + temp.toString());
        return df2.format(parameter);
    }

    /**
     * 空对象处理
     */
    public static String checkNull(Object ob) {
        if ((ob == null) || (ob.equals("null"))) {
            return "";
        } else {
            return ob.toString();
        }
    }

    /**
     * 空对象"0"处理
     */
    public static String checkNullNum(Object ob) {
        if ((ob == null) || (ob.equals("null")) || (ob.equals(""))) {
            return "0";
        } else {
            return ob.toString();
        }
    }
    /**
     * 空对象"0"处理
     */
    public static String checkNullTitle(Object ob) {
        if ((ob == null) || (ob.equals("null")) || (ob.equals(""))) {
            return "";
        } else {
            return ob.toString();
        }
    }
   
    /**
     * 空对象处理(用于数据库操作)
     */
    public static String checkDBNull(Object ob) {
        if ((ob == null) || (ob.equals(""))) {
            return "null";
        } else {
            return ob.toString();
        }
    }

    /**
     * 定义默认查询列表的行图标
     */
    public static String getListImage() {
        return "/images/dot.gif";
    }

    /**
     * 输出给定脚本的完整javaScripts语法
     */
    public static String outScripts(String Str) {
        return "<SCRIPT LANGUAGE=\"JavaScript\"> " + Str + " </script>";
    }

 

    /**
     * 输出给定session中的变量信息,输出结束,然后,删除.
     */
    public static String outInfo(HttpSession session, String varStr, String type) {
        String out_str = "";

        if (type.equals("1")) {
            if (!isEmpty((String) session.getAttribute(varStr))) {
                out_str = "<SCRIPT LANGUAGE=\"JavaScript\"> ";
                out_str = out_str
                        + "alert(\""
                        + DoTextBean.replace((String) session
                                .getAttribute(varStr), "<br>", "") + "\");";
                out_str = out_str + "  </SCRIPT>";
                session.removeAttribute(varStr);
            }
        } else {
            if (!isEmpty((String) session.getAttribute(varStr))) {

                session.setAttribute("returnType", "close");
                session.removeAttribute("returnPage");
                out_str = "<SCRIPT LANGUAGE=\"JavaScript\"> ";

                String str = "'scrollbars=yes,resizable=yes, Height='+(screen.availheight-400)+',Width='+(screen.width-300)+',top=50,left=50'";
                out_str = out_str
                        + "window.open(\"/jsp/common/success.jsp\",''," + str
                        + ");";
                out_str = out_str + "  </SCRIPT>";

            }
        }

        return out_str;
    }

    /**
     * 输出给定request中的变量信息,输出结束,然后,删除.
     */
    public static String outInfo(HttpServletRequest request, String varStr) {
        String out_str = "";

        if (!isEmpty((String) request.getAttribute(varStr))) {
            out_str = "<SCRIPT LANGUAGE=\"JavaScript\"> ";
            out_str = out_str
                    + "alert(\""
                    + DoTextBean.replace((String) request.getAttribute(varStr),
                            "<br>", "") + "\");";
            out_str = out_str + "  </SCRIPT>";
            request.removeAttribute(varStr);
        }
        return out_str;

    }

    /**
     * 输出给定request中的变量信息,输出结束,然后,删除.
     */
    public static String outInfo(HttpServletRequest request,
            HttpSession session, String varStr, String type) {
        String out_str = "";

        if (type.equals("1")) {
            if (!isEmpty((String) request.getAttribute(varStr))) {
                out_str = "<SCRIPT LANGUAGE=\"JavaScript\"> ";
                out_str = out_str
                        + "alert(\""
                        + DoTextBean.replace((String) request
                                .getAttribute(varStr), "<br>", "") + "\");";
                out_str = out_str + "  </SCRIPT>";
                request.removeAttribute(varStr);
            }
        } else {
            if (!isEmpty((String) request.getAttribute(varStr))) {

                session.setAttribute("returnType", "close");
                session.setAttribute(varStr, (String) request
                        .getAttribute(varStr));
                session.removeAttribute("returnPage");
                request.removeAttribute(varStr);
                out_str = "<SCRIPT LANGUAGE=\"JavaScript\"> ";

                String str = "'scrollbars=yes,Height='+(screen.availheight-200)+',Width='+(screen.width-250)+',top=50,left=50'";

                out_str = out_str
                        + "window.open(\"/jsp/common/success.jsp\",''," + str
                        + ");";
                out_str = out_str + "  </SCRIPT>";

            }
        }

        return out_str;
    }

    /**
     * 提示给定字符串的信息.
     */
    public static String outInfo(String outInfo) {
        if (isEmpty(outInfo)) {
            return "";
        }
        outInfo = DoTextBean.replace(outInfo, "<br>", "");
        String outStr = null;
        outStr = "<SCRIPT LANGUAGE=\"JavaScript\"> ";
        outStr = outStr + "alert(\"" + outInfo + "\");";
        outStr = outStr + "  </SCRIPT>";
        return outStr;
    }

    /**
     * 输出图片单击函数参数的javaScripts语法,主要用于查询列表业务控制的image button服务
     */
    public static String outClick(String Str) {
        if (isEmpty(Str)) {
            return "";
        } else {
            return " onclick='" + Str + " ; return false;'";
        }
    }

   
  

    /**
     * 返回系统当前时间
     */
    public static String getTime() {
        java.util.Date ss = new java.util.Date();
        return String.valueOf(ss.getTime());
    }

    /**
     * 字符串转为日期类型
     */
    public static java.sql.Date convertDate(String param) {

        java.sql.Date returnDate = null;
        if (!isEmpty(param)) {
            returnDate = java.sql.Date.valueOf(param);
        }
        return returnDate;
    }

    /**
     * 字符串转为time类型
     */
    public static java.sql.Time convertTime(String param) {

        java.sql.Time returnTime = null;
        if (!isEmpty(param)) {
            returnTime = java.sql.Time.valueOf(param);
        }
        return returnTime;

    }

    /**
     * 字符串转为Datetime类型
     */
    public static java.sql.Timestamp convertDatatime(String param) {

        java.sql.Timestamp returnTime = null;
        if (!isEmpty(param)) {
            returnTime = java.sql.Timestamp.valueOf(param);
        }
        return returnTime;

    }

    /**
     * 返回给定文件的扩展名
     */
    public static String getFileExtName(String fileName) {

        return fileName.substring(fileName.lastIndexOf("."), fileName.length());
    }

    /**
     * @brief: 取参数表(sys_param)中参数值
     * @param paramType
     *            参数类型
     * @param code
     *            参数代码
     * @return 参数代码code对应的参数值;
     */
    public static Sys_paramVo getParam(String paramType, String code) {
        Sys_paramVo returnVo = null;
        try {
//             String codeName = null;
//             ConversionBean getValueObject = new ConversionBean();
//             getValueObject.setSql(ICommonPolicy.getParamSql
//             + "where index_type = '" + paramType + "' and index_code='"
//             + code + "'");
//             codeName = getValueObject.getConversionBean();
//             return codeName;
       
            List sysList = null;
            sysList = new ArrayList();
            Delegate cachesDel = new Delegate();
            List list1 = (List) cachesDel.getCashDataList("sys_param");
            String index_code = "";
            String index_type = "";

            Sys_paramVo vo = null;
            for (int i = 0; i < list1.size(); i++) {
                vo = (Sys_paramVo) list1.get(i);
                index_code = vo.getIndex_code();
                index_type = vo.getIndex_type();
                if (paramType.equals(index_type) && (code.equals(index_code))) {
                    returnVo = vo;
                    break;
                }
            }

        } catch (Exception e) {
            e.printStackTrace();

        }
        return returnVo;
    }

    /**
     * @brief: 取参数表(sys_param)中参数值 依次根据参数类型,索引,代码,取代码值
     */
    public static String getParamNumCode(String indexType, String indexNum,
            String indexCode) {
        try {
            String indexValue = null;
            ConversionBean getValueObject = new ConversionBean();
            getValueObject.setSql(ICommonPolicy.getParamSql
                    + "where index_type = '" + indexType + "' and index_num='"
                    + indexNum + "' and index_code='" + indexCode + "'");
            indexValue = getValueObject.getConversionBean();
            return indexValue;

        } catch (Exception e) {
            e.printStackTrace();
            return "";
        }
    }

    /**
     * @brief: 取参数表(sys_param)中参数值 依次根据参数类型,索引,取代码值
     */
    public static String getParamNum(String indexType, String indexNum) {
        try {
            String indexValue = null;
            ConversionBean getValueObject = new ConversionBean();
            getValueObject.setSql(ICommonPolicy.getParamSql
                    + "where index_type = '" + indexType + "' and index_num="
                    + indexNum);
            indexValue = getValueObject.getConversionBean();
            return indexValue;

        } catch (Exception e) {
            e.printStackTrace();
            return "";
        }
    }

    public static String getParamNumWhere(String indexType, String indexNum,
            String whereStr) {
        try {
            String indexValue = null;
            ConversionBean getValueObject = new ConversionBean();
            getValueObject.setSql(ICommonPolicy.getParamSql
                    + "where index_type = '" + indexType + "' and index_num="
                    + indexNum + whereStr);
            indexValue = getValueObject.getConversionBean();
            return indexValue;

        } catch (Exception e) {
            e.printStackTrace();
            return "";
        }
    }

    /**
     * @brief:根据错误信息标题和详细错误信息统一生成提示信息。
     * @param infoName
     *            错误信息标题
     * @param infoDetail
     *            详细错误信息
     * @return 在公共提示页面要显示的信息;
     */
    public static String getErrNote(String infoName, String infoDetail) {
        try {
            String rnStr = null;
            if (infoName == null) {
                infoName = "";
            }
            if (infoDetail == null) {
                infoDetail = "";
            }
            rnStr = "<div  align='center' >操作错误</div><br>&nbsp;&nbsp;"
                    + "错误说明:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"
                    + infoName + "<br>&nbsp;&nbsp;详细错误:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;" + infoDetail;
            return rnStr;

        } catch (Exception e) {
            e.printStackTrace();
            return "";
        }
    }

    /**
     * @brief:根据信息标题统一生成提示信息。
     * @param infoName
     *            信息标题
     * @return 在公共提示页面要显示的信息;
     */
    public static String getOkNote(String infoName) {
        try {
            String rnStr = null;
            if (infoName == null) {
                infoName = "";
            }
            rnStr = "操作完成!<br>处理结果:<br>" + infoName;
            return rnStr;

        } catch (Exception e) {
            e.printStackTrace();
            return "";
        }
    }

  

    /**
     * if参数为空,则返回当前日期(格式:2004-9-5) 否则直接返回原参数值。 主要用于页面结束时间默认值处理
     */
    public static String getCurDtIfNullEnd(String paramValue) {
        String endDate = null;
        if (Tools.isEmpty(paramValue))
        // 取当前值
        {
            // DateBean dateBean = new DateBean();
            // endDate = dateBean.getPageDate();
            ConversionBean convert = new ConversionBean();
            convert.setSql("select to_char(sysdate,'YYYY-MM-DD') from dual");
            endDate = convert.getConversionBean();

            return endDate;
        } else {
            return paramValue;
        }
    }

    /**
     * if参数为空,则返回当前日期早3天的日期(格式:2004-9-5) 否则直接返回原参数值。 主要用于页面开始时间默认值处理
     */
    public static String getCurDtIfNullBegin(String paramValue) {
        String endDate = null;
        if (Tools.isEmpty(paramValue))
        // 取当前值
        {
            // DateBean dateBean = new DateBean();
            // endDate = dateBean.getDateBeforeToDay(3);
            ConversionBean convert = new ConversionBean();
            convert.setSql("select to_char(sysdate-3,'YYYY-MM-DD') from dual");
            endDate = convert.getConversionBean();
            return endDate;
        } else {
            return paramValue;
        }
    }

    // 取当系统当前时间
    public static String getCurDateTime() {
          ConversionBean convert = new ConversionBean();
            convert.setSql("select to_char(sysdate,'YYYY-MM-DD HH24:MI:SS') from dual");         
            return convert.getConversionBean();
      
    }
    /**
     * if参数为空,则返回当前日期早1月的日期(格式:2004-9-5) 否则直接返回原参数值。 主要用于页面开始时间默认值处理
     */
    public static String getCurMonthIfNullBegin(String paramValue) {
        String endDate = null;
        if (Tools.isEmpty(paramValue))
        // 取当前值
        {
            ConversionBean convert = new ConversionBean();
            convert
                    .setSql("select to_char(add_months(sysdate,-1),'YYYY-MM-DD') from dual");
            endDate = convert.getConversionBean();
            return endDate;
        } else {
            return paramValue;
        }
    }

    /**
     * 如果paramValue参数为空,则返回当前日期-dtInterval的日期(格式:2005-03-25) 如果paramValue不为空,则直接返回paramValue 主要用于页面开始时间默认值处理
     */
    public static String getPageDtIfNull(String paramValue, int dtInterval) {
        String pageDate = null;
        if (paramValue == null) {
            ConversionBean convert = new ConversionBean();
            convert.setSql("select to_char(sysdate-" + dtInterval
                    + ",'YYYY-MM-DD') from dual");
            pageDate = convert.getConversionBean();
            return pageDate;
        } else {
            // 直接返回
            return paramValue;
        }
    }

    /**
     * 如果paramValue参数为空,则返回当前日期-dtInterval的日期(格式:2005-03-25) 如果paramValue不为空,则直接返回paramValue 主要用于页面开始时间默认值处理 增加对"NULL"的判断
     */
    public static String getPageDateTimeIfNull(String paramValue, int dtInterval) {
        String pageDate = null;
        if (paramValue == null || "null".equalsIgnoreCase(paramValue)) {
            ConversionBean convert = new ConversionBean();
            convert.setSql("select to_char(sysdate -  "  + dtInterval
                    + ",'YYYY-MM-DD') from dual");
            pageDate = convert.getConversionBean();
            return pageDate;
        } else {
            // 直接返回
            return paramValue;
        }
    }

   
   
    public static String getDateAdd(String paramValue, int dtInterval) {
        String pageDate = null;
        if (paramValue == null || "null".equalsIgnoreCase(paramValue)) {
            ConversionBean convert = new ConversionBean();
            convert.setSql("select to_char(sysdate +  "  + dtInterval
                    + ",'YYYY-MM-DD') from dual");
            pageDate = convert.getConversionBean();
            return pageDate;
        } else {
            // 直接返回
            return paramValue;
        }
    }
    /**
     * 如果paramValue参数为空,则返回当前日期-dtInterval的月份(格式:03) 如果paramValue不为空,则直接返回paramValue 主要用于页面开始时间默认值处理
     */
    public static String getPageMonthIfNull(String paramValue, int dtInterval) {
        String pageDate = null;
        if (Tools.isEmpty(paramValue)) {
            ConversionBean convert = new ConversionBean();
            convert.setSql("select to_char(add_months(sysdate,-" + dtInterval
                    + "),'MM') from dual");
            pageDate = convert.getConversionBean();
            return pageDate;
        } else {
            // 直接返回
            return paramValue;
        }
    }

    /**
     * 如果paramValue参数为空,则返回当前日期-dtInterval的月份(格式:200503) 如果paramValue不为空,则直接返回paramValue 主要用于页面开始时间默认值处理
     */
    public static String getPageYearMonthIfNull(String paramValue,
            int dtInterval) {
        String pageDate = null;
        if (Tools.isEmpty(paramValue)) {
            ConversionBean convert = new ConversionBean();
            convert.setSql("select to_char(add_months(sysdate,-" + dtInterval
                    + "),'YYYYMM') from dual");
            pageDate = convert.getConversionBean();
            return pageDate;
        } else {
            // 直接返回
            return paramValue;
        }
    }

    /**
     * 如果paramValue参数为空,则返回当前日期-dtInterval的年月(格式:200503) 如果paramValue不为空,则返回paramValue - dtInterval的年月(格式:200503) 主要用于页面开始时间默认值处理
     */
    public static String getAddMonths(String paramValue, int dtInterval) {
        String pageDate = null;
        ConversionBean convert = new ConversionBean();
        if (Tools.isEmpty(paramValue)) {
            convert.setSql("select to_char(add_months(sysdate,-" + dtInterval
                    + "),'YYYYMM') from dual");
        } else {
            convert.setSql("select to_char(add_months(to_date( '" + paramValue
                    + "', " + " 'yyyy-mm-dd'),-" + dtInterval
                    + "),'YYYYMM') from dual");
        }
        pageDate = convert.getConversionBean();
        return pageDate;
    }

    /**
     * 生成年选择框,范围为:2000-2050
     */
    public static String outYearDDlist(String selectName, String defaultValue1,
            String property) {
        String defaultValue = defaultValue1;
        int yearBegin = 1997; // 定义起始年
        int yearEnd = 2017; // 定义结束年
        DateBean dateBean = new DateBean();
        StringBuffer tempString = new StringBuffer("");
        if (defaultValue == null) {
            defaultValue = dateBean.getYear();
        }
        tempString.append("<select name=" + selectName);
        tempString.append(" style='width:55;' class='selectBox' " + property);
        tempString.append(">");
        for (int i = yearBegin; i <= yearEnd; i++) {
            if (defaultValue.trim().equals(new Integer(i).toString())) {
                tempString.append("<option value='" + new Integer(i).toString()
                        + "' selected>" + new Integer(i).toString()
                        + "</option>\n");
            } else {
                tempString.append("<option value='" + new Integer(i).toString()
                        + "' >" + new Integer(i).toString() + "</option>\n");
            }

        }
        tempString.append("</select>");
        return tempString.toString();
    }

    public static String outYearDDlist(String selectName, String defaultValue1) {
        String defaultValue = defaultValue1;
        int yearBegin = 1900; // 定义起始年
        int yearEnd = 2099; // 定义结束年
        DateBean dateBean = new DateBean();
        StringBuffer tempString = new StringBuffer("");
        if (defaultValue == null) {
            defaultValue = dateBean.getYear();
        }
        tempString.append("<select name=" + selectName);
        tempString.append(" style='width:55;' class='selectBox' ");
        tempString.append(">");
        for (int i = yearBegin; i <= yearEnd; i++) {
            if (defaultValue.trim().equals(new Integer(i).toString())) {
                tempString.append("<option value='" + new Integer(i).toString()
                        + "' selected>" + new Integer(i).toString()
                        + "</option>\n");
            } else {
                tempString.append("<option value='" + new Integer(i).toString()
                        + "' >" + new Integer(i).toString() + "</option>\n");
            }

        }
        tempString.append("</select>");
        return tempString.toString();
    }

    /**
     * 生成月选择框,范围为:1-12
     */
    public static String outMonthDDlist(String selectName, String defaultValue1) {
        String defaultValue = defaultValue1;
        int monthBegin = 1; // 定义起始月
        int monthEnd = 12; // 定义结束月
        DateBean dateBean = new DateBean();
        StringBuffer tempString = new StringBuffer("");
        if (defaultValue == null) {
            defaultValue = dateBean.getMonth();
        }
        tempString.append("<select name=" + selectName);
        tempString.append(" style='width:40;'  class='selectBox' ");
        tempString.append(">");
        for (int i = monthBegin; i <= monthEnd; i++) {
            if (defaultValue.trim()
                    .equals(getNumStr(new Integer(i).toString()))) {
                tempString.append("<option value='"
                        + getNumStr(new Integer(i).toString()) + "' selected>"
                        + getNumStr(new Integer(i).toString()) + "</option>\n");
            } else {
                tempString.append("<option value='"
                        + getNumStr(new Integer(i).toString()) + "' >"
                        + getNumStr(new Integer(i).toString()) + "</option>\n");
            }

        }
        tempString.append("</select>");

        return tempString.toString();
    }

    /**
     * 生成季选择框,范围为:1-4
     */
    public static String outQuarterDDlist(String selectName,
            String defaultValue1) {
        String defaultValue = defaultValue1;
        int quarterBegin = 1;
        int quarterEnd = 4;
        DateBean dateBean = new DateBean();
        StringBuffer tempString = new StringBuffer("");
        if (defaultValue == null) {
            defaultValue = "4";
        }
        tempString.append("<select name=" + selectName);
        tempString.append(" style='width:40;'  class='selectBox' ");
        tempString.append(">");
        for (int i = quarterBegin; i <= quarterEnd; i++) {
            if (defaultValue.trim()
                    .equals(getNumStr(new Integer(i).toString()))) {
                tempString.append("<option value='"
                        + getNumStr(new Integer(i).toString()) + "' selected>"
                        + getNumStr(new Integer(i).toString()) + "</option>\n");
            } else {
                tempString.append("<option value='"
                        + getNumStr(new Integer(i).toString()) + "' >"
                        + getNumStr(new Integer(i).toString()) + "</option>\n");
            }

        }
        tempString.append("</select>");

        return tempString.toString();
    }

    /**
     * 生成季选择框,范围为:1-4
     */
    public static String outQuarterDDlist(String selectName,
            String defaultValue1, String property) {
        String defaultValue = defaultValue1;
        int quarterBegin = 1;
        int quarterEnd = 4;
        DateBean dateBean = new DateBean();
        StringBuffer tempString = new StringBuffer("");
        if (defaultValue == null) {
            defaultValue = "4";
        }
        tempString.append("<select name=" + selectName);
        tempString.append(" style='width:40;'  class='selectBox' " + property);
        tempString.append(">");
        for (int i = quarterBegin; i <= quarterEnd; i++) {
            if (defaultValue.trim()
                    .equals(getNumStr(new Integer(i).toString()))) {
                tempString.append("<option value='"
                        + getNumStr(new Integer(i).toString()) + "' selected>"
                        + getNumStr(new Integer(i).toString()) + "</option>\n");
            } else {
                tempString.append("<option value='"
                        + getNumStr(new Integer(i).toString()) + "' >"
                        + getNumStr(new Integer(i).toString()) + "</option>\n");
            }

        }
        tempString.append("</select>");

        return tempString.toString();
    }

    public static String outMonthDDlist(String selectName,
            String defaultValue1, String property) {
        String defaultValue = defaultValue1;
        int monthBegin = 1; // 定义起始月
        int monthEnd = 12; // 定义结束月
        DateBean dateBean = new DateBean();
        StringBuffer tempString = new StringBuffer("");
        if (defaultValue == null) {
            defaultValue = dateBean.getMonth();
        }
        tempString.append("<select name=" + selectName);
        tempString.append(" style='width:40;'  class='selectBox' " + property);
        tempString.append(">");
        for (int i = monthBegin; i <= monthEnd; i++) {
            if (defaultValue.trim()
                    .equals(getNumStr(new Integer(i).toString()))) {
                tempString.append("<option value='"
                        + getNumStr(new Integer(i).toString()) + "' selected>"
                        + getNumStr(new Integer(i).toString()) + "</option>\n");
            } else {
                tempString.append("<option value='"
                        + getNumStr(new Integer(i).toString()) + "' >"
                        + getNumStr(new Integer(i).toString()) + "</option>\n");
            }

        }
        tempString.append("</select>");

        return tempString.toString();
    }

    /**
     * 生成月选择框,范围为:1-12
     */
    public static String outDayDDlist(String selectName, String defaultValue1) {
        String defaultValue = defaultValue1;
        int dayBegin = 1; // 定义起始日
        int dayEnd = 31; // 定义结束日
        DateBean dateBean = new DateBean();
        StringBuffer tempString = new StringBuffer("");
        if (defaultValue == null) {
            defaultValue = dateBean.getDay();
        }
        tempString.append("<select name=" + selectName);
        tempString.append(" style='width:40;'  class='selectBox' ");
        tempString.append(">");
        for (int i = dayBegin; i <= dayEnd; i++) {
            if (defaultValue.trim()
                    .equals(getNumStr(new Integer(i).toString()))) {
                tempString.append("<option value='"
                        + getNumStr(new Integer(i).toString()) + "' selected>"
                        + getNumStr(new Integer(i).toString()) + "</option>\n");
            } else {
                tempString.append("<option value='"
                        + getNumStr(new Integer(i).toString()) + "' >"
                        + getNumStr(new Integer(i).toString()) + "</option>\n");
            }

        }
        tempString.append("</select>");

        return tempString.toString();
    }

    public static String outDayDDlist(String selectName, String defaultValue1,
            String property) {
        String defaultValue = defaultValue1;
        int dayBegin = 1; // 定义起始日
        int dayEnd = 31; // 定义结束日
        DateBean dateBean = new DateBean();
        StringBuffer tempString = new StringBuffer("");
        if (defaultValue == null) {
            defaultValue = dateBean.getDay();
        }
        tempString.append("<select name=" + selectName);
        tempString.append(" style='width:40;'  class='selectBox' " + property);
        tempString.append(">");
        for (int i = dayBegin; i <= dayEnd; i++) {
            if (defaultValue.trim()
                    .equals(getNumStr(new Integer(i).toString()))) {
                tempString.append("<option value='"
                        + getNumStr(new Integer(i).toString()) + "' selected>"
                        + getNumStr(new Integer(i).toString()) + "</option>\n");
            } else {
                tempString.append("<option value='"
                        + getNumStr(new Integer(i).toString()) + "' >"
                        + getNumStr(new Integer(i).toString()) + "</option>\n");
            }

        }
        tempString.append("</select>");

        return tempString.toString();
    }

    /**
     * 生成时选择框,范围为:00-23
     */
    public static String outHourDDlist(String selectName, String defaultValue1) {
        String defaultValue = defaultValue1;
        int begin = 0; // 定义起始时
        int end = 23; // 定义结束时
        StringBuffer tempString = new StringBuffer("");
        if (defaultValue == null) {
            defaultValue = "00";
        }
        tempString.append("<select name=" + selectName);
        tempString.append(" style='width:40;'  class='selectBox' ");
        tempString.append(">");
        for (int i = begin; i <= end; i++) {
            if (defaultValue.trim()
                    .equals(getNumStr(new Integer(i).toString()))) {
                tempString.append("<option value='"
                        + getNumStr(new Integer(i).toString()) + "' selected>"
                        + getNumStr(new Integer(i).toString()) + "</option>\n");
            } else {
                tempString.append("<option value='"
                        + getNumStr(new Integer(i).toString()) + "' >"
                        + getNumStr(new Integer(i).toString()) + "</option>\n");
            }

        }
        tempString.append("</select>");

        return tempString.toString();
    }

    /**
     * 生成分选择框,范围为:00-59
     */
    public static String outMinuteDDlist(String selectName, String defaultValue1) {
        String defaultValue = defaultValue1;
        int begin = 0; // 定义起始分
        int end = 59; // 定义结束分
        StringBuffer tempString = new StringBuffer("");
        if (defaultValue == null) {
            defaultValue = "00";
        }
        tempString.append("<select name=" + selectName);
        tempString.append(" style='width:40;'  class='selectBox' ");
        tempString.append(">");
        for (int i = begin; i <= end; i++) {
            if (defaultValue.trim()
                    .equals(getNumStr(new Integer(i).toString()))) {
                tempString.append("<option value='"
                        + getNumStr(new Integer(i).toString()) + "' selected>"
                        + getNumStr(new Integer(i).toString()) + "</option>\n");
            } else {
                tempString.append("<option value='"
                        + getNumStr(new Integer(i).toString()) + "' >"
                        + getNumStr(new Integer(i).toString()) + "</option>\n");
            }

        }
        tempString.append("</select>");

        return tempString.toString();
    }

    /**
     * 生成秒选择框,范围为:00-59
     */
    public static String outSecondDDlist(String selectName, String defaultValue1) {
        String defaultValue = defaultValue1;
        int begin = 0; // 定义起始秒
        int end = 59; // 定义结束秒
        StringBuffer tempString = new StringBuffer("");
        if (defaultValue == null) {
            defaultValue = "00";
        }
        tempString.append("<select name=" + selectName);
        tempString.append(" style='width:40;'  class='selectBox' ");
        tempString.append(">");
        for (int i = begin; i <= end; i++) {
            if (defaultValue.trim()
                    .equals(getNumStr(new Integer(i).toString()))) {
                tempString.append("<option value='"
                        + getNumStr(new Integer(i).toString()) + "' selected>"
                        + getNumStr(new Integer(i).toString()) + "</option>\n");
            } else {
                tempString.append("<option value='"
                        + getNumStr(new Integer(i).toString()) + "' >"
                        + getNumStr(new Integer(i).toString()) + "</option>\n");
            }

        }
        tempString.append("</select>");

        return tempString.toString();
    }

    /**
     * 数字转为两位字符串
     */
    public static String getNumStr(String numStr) {
        String rt = null;
        rt = numStr;
        if (numStr == null) {
            return "";
        }
        if (numStr.length() == 1) {
            rt = "0" + numStr;
        }
        return rt;

    }

    /**
     * 数据追加新的数组元素
     */
    public static String[] arrayAdd(String[] array1, String[] array2) {
        int ai = 0;
        if (array2 == null || array1 == null) {
            return array1;
        }
        ai = array1.length + array2.length;
        String[] retList = new String[ai];

        for (int i = 0; i < array1.length; i++) {
            retList[i] = array1[i];
        }

        for (int i = 0; i < array2.length; i++) {
            retList[ai - array2.length + i] = array2[i];
        }

        return retList;

    }

    /**
     * URL编码
     */
    public static String getEncodeStr(String str) {
        String temp = str;
        if (temp == null) {
            return "";
        }
        try {
            temp = URLEncoder.encode(temp, "UTF-8");
        } catch (Exception e) {
            return "";
        }
        return temp;

    }

    /**
     * URL解码
     */

    public static String getDecodeStr(String str) {
        String temp = str;
        if (temp == null) {
            return "";
        }
        try {
            temp = URLDecoder.decode(temp, "UTF-8");
        } catch (Exception e) {
            return "";
        }
        return temp;

    }

    /**
     * 月份转换函数 MM -> 中文月或 MM ->英文简写月 flag=E,英文,例如May flag=CHN,中文月,例如5月 flag=C,中文月,例如五月
     */
    public static String getShortMonth(String month, String flag) {
        String tempE = "";
        String tempC = "";
        String tempCHN = "";

        try {
            switch (Integer.parseInt(month)) {
            case 1:
                tempE = ICommonPolicy.shortEMonth1;
                tempCHN = ICommonPolicy.shortCHNMonth1;
                tempC = ICommonPolicy.shortCMonth1;
                break;
            case 2:
                tempE = ICommonPolicy.shortEMonth2;
                tempCHN = ICommonPolicy.shortCHNMonth2;
                tempC = ICommonPolicy.shortCMonth2;
                break;
            case 3:
                tempE = ICommonPolicy.shortEMonth3;
                tempCHN = ICommonPolicy.shortCHNMonth3;
                tempC = ICommonPolicy.shortCMonth3;
                break;
            case 4:
                tempE = ICommonPolicy.shortEMonth4;
                tempCHN = ICommonPolicy.shortCHNMonth4;
                tempC = ICommonPolicy.shortCMonth4;
                break;
            case 5:
                tempE = ICommonPolicy.shortEMonth5;
                tempCHN = ICommonPolicy.shortCHNMonth5;
                tempC = ICommonPolicy.shortCMonth5;
                break;
            case 6:
                tempE = ICommonPolicy.shortEMonth6;
                tempCHN = ICommonPolicy.shortCHNMonth6;
                tempC = ICommonPolicy.shortCMonth6;
                break;
            case 7:
                tempE = ICommonPolicy.shortEMonth7;
                tempCHN = ICommonPolicy.shortCHNMonth7;
                tempC = ICommonPolicy.shortCMonth7;
                break;
            case 8:
                tempE = ICommonPolicy.shortEMonth8;
                tempCHN = ICommonPolicy.shortCHNMonth8;
                tempC = ICommonPolicy.shortCMonth8;
                break;
            case 9:
                tempE = ICommonPolicy.shortEMonth9;
                tempCHN = ICommonPolicy.shortCHNMonth9;
                tempC = ICommonPolicy.shortCMonth9;
                break;
            case 10:
                tempE = ICommonPolicy.shortEMonth10;
                tempCHN = ICommonPolicy.shortCHNMonth10;
                tempC = ICommonPolicy.shortCMonth10;
                break;
            case 11:
                tempE = ICommonPolicy.shortEMonth11;
                tempCHN = ICommonPolicy.shortCHNMonth11;
                tempC = ICommonPolicy.shortCMonth11;
                break;
            case 12:
                tempE = ICommonPolicy.shortEMonth12;
                tempCHN = ICommonPolicy.shortCHNMonth12;
                tempC = ICommonPolicy.shortCMonth12;
                break;
            }
        } catch (Exception e) {
            tempE = "";
            tempCHN = "";
            tempC = "";
        }
        if ("E".equals(flag))
            return tempE;
        else if ("CHN".equals(flag))
            return tempCHN;
        else
            return tempC;
    }

    /**
     * 字符串补齐(后面追加) str:原串 strLen:补齐后的长度 ch:补齐用的字符
     */
    public static String strAppendChr(String str, int strLen, String ch) {

        if (Tools.isEmpty(str) || Tools.isEmpty(ch) || (strLen == 0))
            return str;

        if (str.length() >= strLen)
            return str;
        int j = strLen - str.length();
        for (int i = 0; i < j; i++) {
            str = str + ch;
        }
        return str;
    }

    /**
     * 字符串补齐(前面追加) str:原串 strLen:补齐后的长度 ch:补齐用的字符
     */
    public static String strInsertChr(String str, int strLen, String ch) {
        String temp = "";
        if (Tools.isEmpty(str) || Tools.isEmpty(ch) || (strLen == 0))
            return str;

        if (str.length() >= strLen)
            return str;
        int j = strLen - str.length();
        for (int i = 0; i < j; i++) {
            str = ch + str;
        }
        return str;
    }

    /**
     * 时区偏移处理 time1:原时间 offSet:时区偏移量 flag:D:精确到日;S精确到秒 计算公式:time1 - (offSet) + 0800
     */
    public static String getOffSetDate(String time1, String offSet, String flag) {
        String temp = "";
        String temp0 = "";
        String temp1 = "";
        String temp2 = "";
        /* 计算公式为:用time - offSet + 北京时区0800 */

        if (Tools.isEmpty(time1))
            return "";
        if (Tools.isEmpty(offSet))
            return time1;

        try {
            temp0 = offSet.substring(0, 1); // 取出操作符(+/-)
            temp1 = offSet.substring(1, 3); // 取出小时
            temp2 = offSet.substring(3, 5); // 取出分钟(为00或30或45)

            /* 判断时区偏移 */
            if ("+".equals(temp0))
                temp0 = "-";
            else
                temp0 = "+";

            if ("30".equals(temp2)) {// 如果带30分钟
                if ("S".equals(flag))// 精确到秒
                    temp = " TO_CHAR((TO_DATE('" + time1
                            + "','YYYY-MM-DD HH24:MI:SS') " + temp0
                            + " (TO_NUMBER('" + temp1
                            + "') + TO_NUMBER(0.5))/24 "
                            + " + (8/24)),'YYYY-MM-DD HH24:MI:SS') ";
                else
                    // 精确到日
                    temp = " TO_CHAR((TO_DATE('" + time1 + "','YYYY-MM-DD') "
                            + temp0 + " (TO_NUMBER('" + temp1
                            + "') + TO_NUMBER(0.5))/24 "
                            + " + (8/24)),'YYYY-MM-DD HH24:MI:SS')";
            } else if ("45".equals(temp2)) {// 如果带45分钟
                if ("S".equals(flag))// 精确到秒
                    temp = " TO_CHAR((TO_DATE('" + time1
                            + "','YYYY-MM-DD HH24:MI:SS') " + temp0
                            + " (TO_NUMBER('" + temp1
                            + "') + TO_NUMBER(0.75))/24 "
                            + " + (8/24)),'YYYY-MM-DD HH24:MI:SS') ";
                else
                    // 精确到日
                    temp = " TO_CHAR((TO_DATE('" + time1 + "','YYYY-MM-DD') "
                            + temp0 + " (TO_NUMBER('" + temp1
                            + "') + TO_NUMBER(0.75))/24 "
                            + " + (8/24)),'YYYY-MM-DD HH24:MI:SS')";
            } else {
                if ("S".equals(flag))// 精确到秒
                    temp = " TO_CHAR((TO_DATE('" + time1
                            + "','YYYY-MM-DD HH24:MI:SS') " + temp0
                            + " TO_NUMBER('" + temp1 + "')/24"
                            + " + (8/24)),'YYYY-MM-DD HH24:MI:SS')  ";
                else
                    // 精确到日
                    temp = " TO_CHAR((TO_DATE('" + time1 + "','YYYY-MM-DD') "
                            + temp0 + " TO_NUMBER('" + temp1 + "')/24 "
                            + " + (8/24)),'YYYY-MM-DD HH24:MI:SS') ";
            }
            System.out.println(temp);
            temp = Tools.getDBDate(temp);
        } catch (Exception e) {
            e.printStackTrace();
            return "";
        }

        return temp;
    }
   
    /**
     * ORA错误代码翻译,用于提示信息到JSP页面,不显示SQL异常
     */
    public static String getORASQLException(String ex) {
        String temp = "";
        if (!Tools.isEmpty(ex)) {
            if (ex.lastIndexOf("ORA-00001") > 0) {
                temp = "数据库表已存在相同的记录,请检查您的输入,谢谢!";
            } else if (ex.lastIndexOf("ORA-01401") > 0) {
                temp = "您输入的字段的长度超过数据库字段允许的最大长度限制,请检查您的输入,谢谢!";
            } else
                temp = ex;
        } else
            temp = ex;

        return temp;
    }

    /**
     *
     * @param value
     * @return
     */
    public static boolean isEmptyStr(String value) {

        if (value == null || value.trim().length() == 0)
            return true;

        return false;

    }

    /**
     *
     * @param value
     * @return
     */
    public static String toSqlString(String value) {
        return "'" + Tools.checkNull(value) + "'";

    }

    /**
     * @param queryStr
     * @param string
     * @param provValues
     */
    public static void appendSqlInCondition(StringBuffer queryStr,
            String fieldName, String[] fieldValues) {
        if (fieldValues != null && fieldValues.length > 0) {
            StringBuffer values = new StringBuffer("");
            for (int i = 0; i < fieldValues.length; i++) {
                if (isEmptyStr(fieldValues[i])) {
                    continue;
                }
                if (i != fieldValues.length - 1) {
                    values.append(toSqlString(fieldValues[i]) + ",");
                } else {
                    values.append(toSqlString(fieldValues[i]));
                }
            }
            if (!isEmptyStr(values.toString())) {
                queryStr.append(" AND " + fieldName + " IN (" + values + ")");
            }
        }
    }

    /**
     * @param queryStr
     * @param fieldValue
     * @param fieldValue2
     */
    public static void appendSqlStringCondition(StringBuffer queryStr,
            String fieldName, String fieldValue) {
        if (!isEmptyStr(fieldValue)) {
            queryStr
                    .append(" AND " + fieldName + "=" + toSqlString(fieldValue));
        }
    }

    /**
     *
     * @param obj
     * @param nullIfRet
     * @param ret
     * @return
     */
    public static String nvlStr(String obj, String nullIfRet, String ret) {

        return obj == null ? nullIfRet : ret;

    }

    /**
     * 去空格,主要用于从JSP页面获取输入项
     */
    public static String checkSpace(String value) {

        if (!Tools.isEmpty(value))
            return value.trim();
        else
            return value;

    }

    /**
     * @brief: 取参数表(sys_param)中参数值
     * @param paramType
     *            参数类型
     * @param code
     *            参数代码
     * @return 参数代码code对应的参数值;
     */
    public static String getPrintParam(String param, String report_id) {

        String value = null;
        ConversionBean getValueObject = new ConversionBean();
        getValueObject.setConnType(ICommonPolicy.pubdbaConn);
        getValueObject.setSql("select " + param
                + " from pubdba.report_print_param where report_id = '"
                + report_id + "'");
        value = getValueObject.getConversionBean();
        return value;
    }

    /**
     * 格式化double输出 d:需要格式化的数值 p: 格式化类型,例如#,##0.#####
     */
    public static String formatNumber(double d, String p) {
        String s = "";
        try {
            DecimalFormat f = (DecimalFormat) NumberFormat.getInstance();
            f.applyPattern(p);
            s = f.format(d);
            return s;
        } catch (Exception e) {
            e.printStackTrace();
            return "";
        }
    }

 

    // 得到前三天的时间
    public static String getBeforeTime(String str) {
        return DateFormatUtil.getBeforeTime(str);
    }
    // 得到前i天的时间
    public static String getBeforeTime(String str,int i) {
        return DateFormatUtil.getBeforeTime(str,i);
    }
    // 得到当天的时间YYYY-MM-DD
    public static String getCurrentData(String str) {
        return DateFormatUtil.getDataYYYYMMDD(str);
    }

    // 得到上个月:
    public static String getBeforeMonth(String pm_EndtTm) {
        return DateFormatUtil.getBeforeMonth(pm_EndtTm);
    }

    // 得到年度:
    public static String getCurrentYear(String operateTmBegin) {
        return DateFormatUtil.getFormatStartEndTmByYYYY(operateTmBegin);
    }
    /**
     * 返回当前年份上个月的第一天
     * @param month
     * @return
     */
    public static String getFirstDateOfLastMonth(String format) {
    int year = java.util.Calendar.getInstance().get(java.util.Calendar.YEAR) ;
    int lastMonth = java.util.Calendar.getInstance().get(java.util.Calendar.MONTH) ;
    DecimalFormat sf = new DecimalFormat();
    SimpleDateFormat sfDate = new SimpleDateFormat();
    SimpleDateFormat sfStr = new SimpleDateFormat();
    sfDate.applyPattern("yyyyMMdd");
    sfStr.applyPattern(Tools.isEmpty(format)?"yyyy-MM-dd":format);
        sf.applyPattern("00");
        java.util.Date dTmp = null;
try {
dTmp = sfDate.parse(year + "" + sf.format(lastMonth) + "01");
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
       
        return sfStr.format(dTmp);
    }
    /**
     * 返回当前年份上个月的最后一天
     * @param format 设置返回日期的格式如:yyyy-MM-dd  yyyyMMdd  yyyy/MM/dd
     */
    public static String getLastDateOfLastMonth(String format) {

    int year = java.util.Calendar.getInstance().get(java.util.Calendar.YEAR) ;
    int lastMonth = java.util.Calendar.getInstance().get(java.util.Calendar.MONTH) ;
    DecimalFormat sf = new DecimalFormat();
        sf.applyPattern("00");
    return getLastDate(year+"",sf.format(lastMonth),Tools.isEmpty(format)?"yyyy-MM-dd":format);

    }
    /**
     * 根据年、月 取得 当月最后一天的完整日期
     *
     * @param year   2006
     * @param month  01
     * @return 20060131
     */
    public static String getLastDate(String year,String month,String fmt){
        if(year!=null && month!=null){
            if(year.length()!=4 && month.length()!=2){
                return null;
            }else{
                return getLastDate(year+month,fmt);
            }
        }
        return null;
    }
   
    /**
     * 根据年、月 取得 当月最后一天的完整日期
     * @param yearMonth    年月
     * @param fmt    日期格式.如:yyyy-MM-dd
     * @return    返回年月中的最后一天日期
     */
    public static String getLastDate(String yearMonth,String fmt){       
       
        String str = null;
        boolean isLeaf = false;
       
        /**
         * 计算时间
         */
        if (!Tools.isEmpty(yearMonth) && yearMonth.length() == 6) {
        //计算润年和大月
        int year = Integer.parseInt(yearMonth.substring(0, 4));
            int month = Integer.parseInt(yearMonth.substring(4, 6));
            int day = 30;
           
            if (((year % 4) == 0) && ((year % 100) != 0) || ((year % 400) == 0)) {
                isLeaf = true;
            }
            if (month == 1 || month == 3 || month == 5
                    || month == 7 || month == 8
                    || month == 10 || month == 12) {
                day = 31;
            } else if (month == 2) {
                if (isLeaf) {
                    day = 29;
                } else {
                    day = 28;
                }
            } else {
                day = 30;
            }
           
            //如果是1-9月份和1-9日的话则要前面加一个“0”
            DecimalFormat sf = new DecimalFormat();
            sf.applyPattern("00");
            String monthStr = sf.format(month);
            String dayStr = sf.format(day);
            String formatDate = year + monthStr + dayStr;        
           
            //应用日期格式
            fmt = Tools.isEmpty(fmt)?"yyyyMMdd":fmt;
            SimpleDateFormat formatStr = new SimpleDateFormat(fmt);
            try  {
            SimpleDateFormat sfTmp = new SimpleDateFormat("yyyyMMdd");
                Date date = sfTmp.parse(formatDate);
                str = formatStr.format(date);
            } catch(Exception e) {
                e.printStackTrace();
            }
        }
        return str;
    }

   
  
   
    /**
     * 生成要设置多个<select>状态的javaScript代码
     * #注意:必须将common.js包含在<select>所有在JSP页面中
     * @param selectNames <select>控件名称
     * @param request
     * @param time 延时执行时间1000=1秒
     * @return
     */
    public static String generateJSOfSelectState(String[] selectNames,HttpServletRequest request,int time ) {
   
    if (selectNames != null && selectNames.length > 0) {
    String [][]selectValues = new String [selectNames.length][];
    for (int i = 0; i < selectNames.length; i++ ) {
    String[] _state = request.getParameterValues(selectNames[i]);
    if (_state != null && _state.length > 0)
    selectValues[i] = _state;
    }
    return generateJSOfSelectState(selectNames,selectValues,time);
    }
    return "";
    }
   
  
   
    /**
     * 批量压缩文件
     *
     * @param filePath   源文件的路径
     * @param fileName   源文件名列表
     * @param zipPath    压缩文件要保存的路径
     * @param zipFileName  保存的压缩文件名
     */
    public static void zipFile(String filePath, List fileName, String zipPath,
            String zipFileName) {
        try {
            FileOutputStream f = new FileOutputStream(zipPath+File.separator+zipFileName);
            CheckedOutputStream ch = new CheckedOutputStream(f, new CRC32());
            ZipOutputStream out = new ZipOutputStream(new BufferedOutputStream(ch));
           
            for (int i = 0; i < fileName.size(); i++) {
                //完整文件路径
                String fn=(String)fileName.get(i);

                String full=filePath+File.separator+fn;
               
                BufferedReader in = new BufferedReader(new InputStreamReader(
                        new FileInputStream(full), "ISO8859_1"));
                int c;               
                ZipEntry entry=new ZipEntry(DoTextBean.gb2iso(fn));
               
                out.putNextEntry(entry);
                while ((c = in.read()) != -1)
                    out.write(c);
                in.close();
                out.closeEntry();
            }
           
            out.close();
            System.out.println("文件压缩成功");
        } catch (Exception e) {
            e.printStackTrace();
        }

    }
   
    /**
     * 批量压缩文件
     *
     * @param fileName   源文件名列表
     * @param zipPath    压缩文件要保存的路径
     * @param zipFileName  保存的压缩文件名
     */
    public static void zipFile(List fileName, String zipPath,
            String zipFileName) {
        try {
            FileOutputStream f = new FileOutputStream(zipPath+File.separator+zipFileName);
            CheckedOutputStream ch = new CheckedOutputStream(f, new CRC32());
            ZipOutputStream out = new ZipOutputStream(new BufferedOutputStream(ch));
           
            for (int i = 0; i < fileName.size(); i++) {
                //完整文件路径
                String fn=(String)fileName.get(i);
                File file=new File(fn);
               
               
                BufferedReader in = new BufferedReader(new InputStreamReader(
                        new FileInputStream(fn), "ISO8859_1"));
                int c;               
                ZipEntry entry=new ZipEntry(DoTextBean.gb2iso(file.getName()));
               
                out.putNextEntry(entry);
                while ((c = in.read()) != -1)
                    out.write(c);
                in.close();
                out.closeEntry();
            }
           
            out.close();
            System.out.println("文件压缩成功");
        } catch (Exception e) {
            e.printStackTrace();
        }

    }
   
    public static String checkDownFile(HttpServletRequest request ) {
    String downFile = (String) request.getAttribute("_ZIP_FILE_NAME");
if (!Tools.isEmpty(downFile) ) {
try {
downFile = java.net.URLEncoder.encode(downFile,"UTF-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
return "document.location.href='/zipDownload?_ZIP_FILE_NAME=" + downFile + "';";
}
return "";
    }
   
/**
*
* @param value
* @return boolean 为空返回 true, 不为空返回 false
*/

public static boolean isEmpty(String value) {
return (null == value || Constants.SPACE.equals(value) || Constants.ZERO == value
.trim().length()) ? true : false;
}

/**
*
* @param str
* @return boolean 为数字返回true,不为数字或者为空返回 false
*/

public static boolean isNumeric(String str) {
return CommonUtils.isEmpty(str) ? false : Pattern
.compile(Constants.VALIDATE_STRING_ISNUMBERIC).matcher(str)
.matches();
}

/**
*
* @param fileName
* @return 是文件返回true, 文件名不是文件或为空返回false
*/
public static boolean isFile(String fullFileNamePath) {
return CommonUtils.isEmpty(fullFileNamePath) ? false : new File(
fullFileNamePath).isFile();
}

/**
*
* @param filePath
*            文件路径
* @return 文件后缀
*/
public static String filePostfix(String filePath) {
return CommonUtils.isEmpty(filePath) ? Constants.SPACE : filePath
.substring(filePath.lastIndexOf(Constants.SPOT));
}
/**
* @see 判断 map里面的值是否为空,是否为文件真实名
* @param fileMap 文件路径,文件类型
* @return 参数是文件真实名返回true,否则返回false
*/
public static boolean isFile(Map<String, String> fileMap) {
boolean bool = false;
if (fileMap.isEmpty()) {
bool = false;
} else {
for (Iterator<Entry<String, String>> iterator = fileMap.entrySet().iterator(); iterator
.hasNext();) {
Map.Entry<String, String> mapInstance = (Map.Entry<String, String>) iterator
.next();

File file = new File(mapInstance.getKey());
if (file.isFile()) {
return true;
} else {
bool = false;
}
}
}
return bool;
}

}