(转)Java项目开发公共方法小结

package com.baosight.kwan;

import java.math.BigDecimal;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Random;

public class Tools {

  public static final String STRING_EMPTY = "";

  public static final String GBK = "gbk";

  public static final String NULL = "null";

  public static final String N_ONLY = "N";

  public static final String L_ONLY = "L";

  public static final String NUMBER = "0123456789";

  public static final String LETTER = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";

  public static final String ISO_8859_1 = "iso-8859-1";

  public static final String STR_ZERO = "0";

  public static final double DOUBLE_ZERO = 0;

  public static final String DATE_SHORT = "yyyy-MM-dd";

  public static final String DATE_LONG = "yyyy-MM-dd HH:mm:ss";

  private Tools() {
    // 禁止该类被实例化
  }

  /**
   * 判断对象是否为null或者为空
   * 
   * @param object
   *            判断的对象
   * @return
   */
  public static boolean nullOrEmpty(Object object) {
    return object == null || STRING_EMPTY.equals(object.toString().trim());
  }

  /**
   * 判断对象是否为null或者为空
   * 
   * @param object
   *            判断的对象
   * @return
   */
  public static boolean notNullAndEmpty(Object object) {
    return nullOrEmpty(object) ? false : true;
  }

  /**
   * 获取对象的String值
   * 
   * @param object
   *            操作的对象
   * @return
   */
  public static String getStrValue(Object object) {
    if (nullOrEmpty(object)) {
      return STRING_EMPTY;
    } else {
      return object.toString().trim();
    }
  }

  /**
   * 获取对象的int值[譬如:String型的"1.25",用Integer.valueOf().intValue()或者Integer.parseInt()都会抛出异常,需先转换为double]
   * 
   * @param object
   *            被转换的对象
   * @return
   */
  public static int getIntValue(Object object) {
    return (int) getDoubleValue(object);
  }

  /**
   * 获取对象的double值
   * 
   * @param object
   *            被转换的对象
   * @return
   */
  public static double getDoubleValue(Object object) {
    try {
      return Double.valueOf(getStrValue(object)).doubleValue();
    } catch (Exception ex) {
      return DOUBLE_ZERO;
    }
  }


  /**
   * 得到当前系统时间,返回String类型,格式为"yyyy-MM-dd"
   * 
   * @return
   */
  public static String getSysyyyyMMdd() {
    SimpleDateFormat f = new SimpleDateFormat(DATE_SHORT);
    return f.format(new Date());
  }

  /**
   * 得到当前系统时间,返回Date类型,格式为yyyy-MM-dd
   * 
   * @return
   */
  public static Date getSysShortDate() {
    SimpleDateFormat f = new SimpleDateFormat(DATE_SHORT);
    try {
      return f.parse(getSysyyyyMMdd());
    } catch (Exception e) {
      return null;
    }
  }

  /**
   * 得到当前系统时间 返回String类型,格式为"yyyy-MM-dd HH:mm:ss"
   * 
   * @return
   */
  public static String getSysyyyyMMddHHmmss() {
    SimpleDateFormat f = new SimpleDateFormat(DATE_LONG);
    return f.format(new Date());
  }

  /**
   * 得到当前系统时间 返回Date类型,格式为yyyy-MM-dd HH:mm:ss
   * 
   * @return
   */
  public static Date getSysLongDate() {
    SimpleDateFormat f = new SimpleDateFormat(DATE_LONG);
    try {
      return f.parse(getSysyyyyMMddHHmmss());
    } catch (Exception e) {
      return null;
    }
  }

  /**
   * 将String型日期转换为Date型长日期(带时分秒)
   * 
   * @param date
   *            被转换的对象
   * @return
   */
  public static Date stringToDate(String date) {
    if (nullOrEmpty(date)) {
      return null;
    } else {
      SimpleDateFormat f = new SimpleDateFormat(DATE_LONG);
      try {
        return f.parse(getStrValue(date));
      } catch (Exception e) {
        return null;
      }
    }
  }

  /**
   * 将Date型日期转换为String型长日期(带时分秒)
   * 
   * @param date
   *            被转换的对象
   * @return
   */
  public static String dateToString(Date date) {
    if (nullOrEmpty(date)) {
      return STRING_EMPTY;
    } else {
      SimpleDateFormat f = new SimpleDateFormat(DATE_LONG);
      return f.format(date);
    }
  }

  /**
   * 将String型指定格式日期转换为Date型日期
   * 
   * @param date
   *            被转换的对象
   * @param pattern
   *            被转换的对象格式
   * @return
   */
  public static Date stringToDate(String date, String pattern) {
    if (nullOrEmpty(pattern)) {
      return stringToDate(date);
    } else {
      SimpleDateFormat f = new SimpleDateFormat(pattern);
      try {
        return f.parse(getStrValue(date));
      } catch (Exception e) {
        return null;
      }
    }
  }

  /**
   * 将Date型日期转换为String型指定格式日期
   * 
   * @param date
   *            被转换日期对象
   * @param pattern
   *            指定转换格式
   * @return
   */
  public static String dateToString(Date date, String pattern) {
    if (nullOrEmpty(pattern)) {
      return dateToString(date);
    } else {
      SimpleDateFormat format = new SimpleDateFormat(pattern);
      return format.format(date);
    }
  }

  /**
   * 在指定时间上增加指定年、月、日、时、分、秒,日期类型
   * 
   * @param date
   *            指定日期时间
   * @param field
   *            需要做变更的日历时间域
   * @param value
   *            增加的时间
   * @return
   */
  public static Date markDate(Date date, int field, int value) {
    if (nullOrEmpty(date)) {
      return null;
    } else {
      Calendar calendar = Calendar.getInstance();
      calendar.setTime(date);
      switch (field) {
      case Calendar.YEAR:
        calendar
            .set(Calendar.YEAR, calendar.get(Calendar.YEAR) + value);
        break;
      case Calendar.MONTH:
        calendar.set(Calendar.MONTH, calendar.get(Calendar.MONTH)
            + value);
        break;
      case Calendar.DAY_OF_YEAR:
        calendar.set(Calendar.DAY_OF_YEAR, calendar
            .get(Calendar.DAY_OF_YEAR)
            + value);
        break;
      case Calendar.HOUR:
        calendar
            .set(Calendar.HOUR, calendar.get(Calendar.HOUR) + value);
        break;
      case Calendar.MINUTE:
        calendar.set(Calendar.MINUTE, calendar.get(Calendar.MINUTE)
            + value);
        break;
      case Calendar.SECOND:
        calendar.set(Calendar.SECOND, calendar.get(Calendar.SECOND)
            + value);
        break;
      default:
        break;
      }
      return calendar.getTime();
    }
  }

  /**
   * double型在做运算时会失去精度,高精度数据运算需要用BigDecimal,同时必须用String来构造
   */

  /**
   * 高精度加法运算
   * 
   * @param data1
   *            加数
   * @param data2
   *            被加数
   * @return
   */
  public static double addition(Object data1, Object data2) {
    return new BigDecimal(getStrValue(getDoubleValue(data1))).add(
        new BigDecimal(getStrValue(getDoubleValue(data2))))
        .doubleValue();
  }

  /**
   * 高精度减法运算
   * 
   * @param data1
   *            减数
   * @param data2
   *            被减数
   * @return
   */
  public static double subduction(Object data1, Object data2) {
    return new BigDecimal(getStrValue(getDoubleValue(data1))).subtract(
        new BigDecimal(getStrValue(getDoubleValue(data2))))
        .doubleValue();
  }

  /**
   * 高精度乘法运算
   * 
   * @param data1
   *            乘数
   * @param data2
   *            被乘数
   * @return
   */
  public static double multiplication(Object data1, Object data2) {
    return new BigDecimal(getStrValue(getDoubleValue(data1))).multiply(
        new BigDecimal(getStrValue(getDoubleValue(data2))))
        .doubleValue();
  }

  /**
   * 高精度除法运算
   * 
   * @param data1
   *            除数
   * @param data2
   *            被除数
   * @return
   */
  public static double division(Object data1, Object data2) {
    if (getDoubleValue(data2) != DOUBLE_ZERO) {
      return new BigDecimal(getStrValue(getDoubleValue(data1))).divide(
          new BigDecimal(getStrValue(getDoubleValue(data2))))
          .doubleValue();
    } else {
      return DOUBLE_ZERO;
    }
  }

 项目已经上线,现在处于维护阶段,没什么事情做,就即兴写了一些常用的common方法(很多方法写成后未经测试,另外原稿很多方法中check失败是抛异常的,后来一想,共公共方法,也许return默认值比较好,于是出现了很多类似return STRING_EMPTY或者return null),贴在这里,仅供参考交流之用,不妥之处也请大家指正。


原文链接

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值