分转元,元转分及常见工具类

package com.bfb.gateway.payment.service.utils;

import com.bfb.gateway.payment.entity.model.KVData;
import com.bfb.gateway.payment.entity.model.exception.PaymentException;
import org.apache.http.NameValuePair;
import org.apache.http.message.BasicNameValuePair;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.math.BigDecimal;
import java.text.DecimalFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;
import org.apache.commons.beanutils.BeanUtils;

/**
 * Created by AB045982 on 2015/5/22.
 */
public class StaticFunctions {
    private static final Logger logger = LoggerFactory.getLogger(StaticFunctions.class);

    final static DecimalFormat NF_YUAN = new DecimalFormat("#####################0.00");
    final static DecimalFormat NF_FEN = new DecimalFormat("#####################0");

    /**
     * 分转元
     *
     * @param fen
     * @return
     */
    public static BigDecimal moneyFen2Yuan(String fen) {
        if (fen == null || !fen.matches(Regex.REGEX_MONEY_FEN))
            return null;
        return formatYuan(new BigDecimal(fen).divide(new BigDecimal("100")));
    }

    public static BigDecimal moneyYuan2Fen(BigDecimal yuan) {
        return yuan==null?null:formatFen(yuan.multiply(new BigDecimal("100")));
    }

    public static String moneyFen2YuanStr(BigDecimal fen) {
        return fen==null?null:NF_YUAN.format(moneyFen2Yuan(fen.toString()));
    }

    public static String moneyYuan2FenStr(BigDecimal yuan) {
        return yuan==null?null:NF_FEN.format(yuan.multiply(new BigDecimal("100")));
    }

    public static BigDecimal formatYuan(BigDecimal yuan) {
        return yuan==null?null:new BigDecimal(NF_YUAN.format(yuan));
    }

    public static BigDecimal formatFen(BigDecimal fen) {
        return fen==null?null:new BigDecimal(NF_FEN.format(fen));
    }

    /**
     * 带毫秒
     *
     * @return
     */
    public static String getNowDateTimeMStr() {
        return getDateTimeMStr(new Date());
    }

    /**
     * 带毫秒
     *
     * @param date
     * @return
     */
    public static String getDateTimeMStr(Date date) {
        SimpleDateFormat format = new SimpleDateFormat("yyyyMMddHHmmssSSS");
        return format.format(date);
    }

    
    /**
    * getDateTimeCmbc(yyyy-MM-dd HH:mm:ss)
    */
    public static String getDateTimeCmbc() {
        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        return format.format(new Date());
    }
    
    /**
    * getDateTimeCmbcQuick(yyyyMMdd HH:mm:ss)
    */
    public static String getDateTimeCmbcQuick() {
        SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd HH:mm:ss");
        return format.format(new Date());
    }
    /**
     * 不带毫秒
     *
     * @return
     */
    public static String getNowDateTimeStr() {
        return getDateTimeStr(new Date());
    }

    /**
     * 不带毫秒
     *
     * @param date
     * @return
     */
    public static String getDateTimeStr(Date date) {
        SimpleDateFormat format = new SimpleDateFormat("yyyyMMddHHmmss");
        return format.format(date);
    }

    /**
     * 不带毫秒
     *
     * @return
     */
    public static String getNowDateStr() {
        return getDateStr(new Date());
    }

   
    public static String getTimeStr(Date date) {
        SimpleDateFormat format = new SimpleDateFormat("HHmmss");
        return format.format(date);
    }
    
    /**
     * 不带毫秒
     *
     * @param date
     * @return
     */
    public static String getDateStr(Date date) {
        SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd");
        return format.format(date);
    }

    public static Date getDateFromStr(String str, String format) {
        SimpleDateFormat sdf = new SimpleDateFormat(format);
        try {
            return sdf.parse(str);
        } catch (ParseException e) {
            logger.error(e.getMessage());
        }
        return null;
    }

    /**
     * yyyyMMdd格式日期加减天数 1:加一天,-1:减一天
     * @param date
     * @param day
     * @return
     */
    public static String addDate(String date, int day) {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
        String result = null;
        try {
            Date d = sdf.parse(date);
            Calendar cal = Calendar.getInstance();
            cal.setTime(d);
            cal.add(Calendar.DATE, day);
            result = sdf.format(cal.getTime());
        } catch (ParseException e) {
            logger.error(e.getMessage());
        }
        return result;
    }

    /**
     * unicode转字符串
     *
     * @param str
     * @return
     */
    public static String unicode2Str(String str) {
        if(str==null)
            return null;
        StringBuffer sb = new StringBuffer();
        String[] arr = str.split("\\\\u");
        int len = arr.length;
        sb.append(arr[0]);
        for (int i = 1; i < len; i++) {
            String tmp = arr[i];
            if (tmp.length() == 4) {
                char c = (char) Integer.parseInt(tmp.substring(0, 4), 16);
                sb.append(c);
                sb.append(tmp.substring(4));
            } else {
                sb.append("\\u").append(tmp);
            }
        }
        return sb.toString();
    }

    /**
     * 字符串转unicode
     *
     * @param str
     * @return
     */
    public static String str2Unicode(String str) {
        if (str==null)
            return null;
        StringBuffer sb = new StringBuffer();
        char[] charArr = str.toCharArray();
        for (char ch : charArr) {
            if (ch > 128) {
                sb.append("\\u" + Integer.toHexString(ch));
            } else {
                sb.append(ch);
            }
        }
        return sb.toString();
    }

    /**
     * 计算两个字符串格式(yyyyMMdd)之间的天数差
     *
     * @param fromDate
     * @param toDate
     * @return
     */
    public static int getDateIntervalDays(String fromDate, String toDate) throws ParseException {
        SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd");

        Date date1 = format.parse(fromDate);
        Date date2 = format.parse(toDate);

        return (int) ((date2.getTime() - date1.getTime()) / 24 * 60 * 60 * 1000);

    }

    /**
     * 将BigDecimal转换成字符串
     *
     * @param amt
     * @return
     */
    public static String convertToMoneyStr(BigDecimal amt) {
        if(amt != null){
            return NF_YUAN.format(amt);
        }else{
            return null;
        }
    }

    /**
     * 将对象转换成List<NameValuePair>格式
     *
     * @param obj 转换对象
     * @return List<NameValuePair>格式
     */
    public static List<NameValuePair> getListNamValPar(Object obj, boolean isBlank) {
        List<NameValuePair> formParams = new ArrayList<NameValuePair>();

        Field[] fieldArr = obj.getClass().getDeclaredFields();
        try {
            for (Field field : fieldArr) {
                field.setAccessible(true);
                if(isBlank) {
                    if (field.get(obj) != null) {
                        formParams.add(new BasicNameValuePair(field.getName(), field.get(obj).toString()));
                    }
                }else{
                    if (field.get(obj) != null && !"".equals(field.get(obj).toString().trim())) {
                        formParams.add(new BasicNameValuePair(field.getName(), field.get(obj).toString()));
                    }
                }
            }
        } catch (IllegalAccessException e) {
            logger.error(e.getMessage());
        }

        return formParams;
    }

    /**
     * 将Name=Value&Name=Value格式的字符串赋值给指定对象
     *
     * @param obj 赋值对象
     * @param str Name=Value&格式的字符
     * @return
     */
    public static Object getObjFromNamValParStr(Object obj, String str) {
        Field[] fieldArr = obj.getClass().getDeclaredFields();
        String nvStrArr[] = str.split("&");

        Map<String, String> map = new HashMap<String, String>();

        for (String nvStr : nvStrArr) {
            map.put(nvStr.substring(0, nvStr.indexOf("=")), nvStr.substring(nvStr.indexOf("=") + 1));
        }

        try {
            for (Field field : fieldArr) {
                field.setAccessible(true);
                if (map.get(field.getName()) != null) {
                    field.set(obj, map.get(field.getName()));
                }
            }
        } catch (IllegalAccessException e) {
            logger.error(e.getMessage());
        }
        return obj;
    }

    /**
     * 将对象转换成List<KVData>格式
     *
     * @param obj 转换对象
     * @return List<KVData>格式
     */
    public static List<KVData> getListKVData(Object obj, boolean isBlank) {
        List<KVData> formParams = new ArrayList<KVData>();

        Field[] fieldArr = obj.getClass().getDeclaredFields();
        try {
            for (Field field : fieldArr) {
                field.setAccessible(true);
                if(isBlank) {
                    if (field.get(obj) != null) {
                        formParams.add(new KVData(field.getName(), field.get(obj).toString()));
                    }
                }else{
                    if (field.get(obj) != null && !"".equals(field.get(obj).toString().trim())) {
                        formParams.add(new KVData(field.getName(), field.get(obj).toString()));
                    }
                }
            }
        } catch (IllegalAccessException e) {
            logger.error(e.getMessage());
        }

        return formParams;
    }


    /**
     * 将Name=Value&Name=Value格式的字符串赋值给指定对象
     *
     * @param obj 赋值对象
     * @param list List<KVData>格式
     * @return
     */
    public static Object getObjFromListKVData(Object obj, List<KVData> list) {
        Field[] fieldArr = obj.getClass().getDeclaredFields();
        try {
            for(KVData kvData : list){
                for (Field field : fieldArr) {
                    field.setAccessible(true);
                    if (kvData.getK().equals(field.getName())) {
                        field.set(obj, kvData.getV());
                        break;
                    }
                }
            }
        } catch (IllegalAccessException e) {
            logger.error(e.getMessage());
        }
        return obj;
    }

    /**
     * 复制两个具有很多相同属性的JavaBean(只会处理bean相同的属性,不同属性需要手动)
     *
     * @param bean1 被赋值对象
     * @param bean2 赋值对象
     * @return
     */
    public static Object beanCopyFun(Object bean1, Object bean2) throws PaymentException{
        try {
            BeanUtils.copyProperties(bean1, bean2);
        } catch (IllegalAccessException e) {
            e.printStackTrace();
            throw new PaymentException(ConstantsPaymentRetCode.BEAN_UTIL_ERROR);
        } catch (InvocationTargetException e) {
            e.printStackTrace();
            throw new PaymentException(ConstantsPaymentRetCode.BEAN_UTIL_ERROR);
        }
        return bean1;
    }

    /**
     * 截取字符串长度(中文2个字节,半个中文显示一个)
     * @param str
     * @param len
     * @return
     */
    public static String subTextString(String str,int len) {
        if (str == null) return null;

        if (str.length() < len / 2) return str;
        int count = 0;
        StringBuffer sb = new StringBuffer();
        String[] ss = str.split("");
        for (int i = 0; i < ss.length - 1; i++) {
            count += ss[i].getBytes().length > 1 ? 2 : 1;
            if (count > len) break;
            sb.append(ss[i]);
        }
        return sb.toString();
    }

}
public class Regex {
    public static final String REGEX_MONEY_YUAN = "^((([1-9]\\d*)(\\.\\d{1,2})?)|(0(\\.\\d{1,2})))$";
    public static final String REGEX_MONEY_FEN = "^[0-9]{1}\\d*$";
    public static final String REGEX_SERIALNO = "^[A-Za-z0-9]+$";
    public static final String REGEX_REQORDERID = "^[A-Za-z0-9]+$";
    public static final String REGEX_ORDERTIME = "^\\d{14}$";
    public static final String REGEX_ORDERPERIOD = "^\\d{0,10}$";
    public static final String REGEX_NUM = "^\\d{1,8}$";
    public static final String REGEX_PHONE = "^((13[0-9])|(15[^4,\\\\D])|(18[0,5-9]))\\\\d{8}$";
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值