java里面如何提升编写速度

一般情况下,编写程序,是在规定的时间内,并且在一段时间内很好的按成,那么就必须要套用现成的东西。在一个新的功能中,如何调用现成的东西呢,那么就是使用第三方包或者是使用自己总结的代码库。接来下是自己看到的一些好的代码库和自己总结的代码库。

通用库

 经常被使用的到apache 的集中包例如apache commons的包,goole guava包,至少需要知道其中的几个关键的类如StringUtils类,这些,其他的都需要记住其中的用法。至少在StringUtils中能够完成大部分字符串的处理工作。

时间处理类

在以前较多的使用JodaTime,该库能够帮助完成很多时间处理上的问题,但java8出来之后,使用java8新的时间处理,也是很方便的,但是一般都习惯使用Date类,如何高效的完成事件的处理呢,我自己是自己总结了一个DateUtil类,其中有自己经常需要使用到的时间处理方法。

集合类库

集合是被经常使用到的一个,在工作中大多数会用到ArrayList,HashMap,HashSet,这个三个集合类,这个Apache Commons Collections库能够处理很多类需要处理的部分,我个人还建议,除了常用到的三个集合类,需要了解更多的其他集合类,并且在一些特殊的场合下使用到他们,因为其他集合类设计出来,都是适合一些特殊场合的,比常见的类处理效率更好。

加密库

Apache Commons家族中的Commons Codec就提供了一些公共的编解码实现,但是我个人还是建议自己维护一个自己的加密库,因为jdk已经提供了原生的加密算法,需要自己去封装一层,而自己维护的工具类就是将这些算法集中起来。

单元测试库

单元测试是很不被重视的一个,但是时非常重要的一个,我我在工作中常用到的测试库JUnit,Mockito和PowerMock,这三个测试库满足了大部分的情况。熟练的使用它,能够在开发过程中将单元测试覆盖率提升到一定比率,并且每次改动代码,都跑一遍单元测试,那么自己维护的代码将出现很少的错误。

 下面分享我的关于这些包的一些笔记:

guava包

  • Objects
    • 使用java原生的替换,其中包括equals和deepEquals
    • hashCode
    • hash(Objects)返回一组对象的hash值
  • Strings
    • padStart(String str,int min,char pad)str头部开始添加min个pad字段
    • padEnd(String str,int min,char pad)str的尾部填充pad字段,总长度为min
    • repeat(String str,int count)将str循环count次拼接成字符串
    • commonPrefix(String a,String b)输出前缀是一样的字符串
    • commonSuffix(String a,String b)输出后缀是一样的字符串
  • joiner
    • Joiner.on(",").skipNulls().join(Arrays.asList("join", "ice", "welcome"));已逗号进行拼接
    • Joiner.on("&").withKeyValueSeparator("=").join(map);键值对已=进行拼接,&连个值之间拼接
    • appendTo(StringBuilder builder,list);给builder进行追加拼接
  • Splitter
    • Splitter.on(",").trimResults().omitEmptyStrings().splitToList(str);已逗号进行分割并返回集合
    • Splitter.on("&").trimResults().omitEmptyStrings() .withKeyValueSeparator("=").split(str);对get连接进行分割,返回map
  • Ints
    • join(separator,arrays),返回字符串
    • indexOf(int[] array, int target)
  • Multimap 一键多值
  • Multiset 接口扩展设置有重复的元素
  • BiMap 存储map值,inverse()将键值对翻转
  • File
    • 文件处理 readLines()读取行的记录
  • EventBus 观察者

commons lang3包

  • RandomUtils 返回某个类型的随机数

  • RandomStringUtils 返回随机数字符串

    • random(15,true,false);//返回15长度,true表示保函字符串,false不保函数字
    • random(15,'abcdefgABCDEFG123456789');//从字符串中获取长度为15的随机数
    • randomAlphabetic(15);//从a-z、A-Z的选择出15随机数
    • randomAlphabetic(2,15);//最小长度是2,最大长度15
    • randomNumeric(15)//数字
  • ClassUtils 获取类名

    • getShortName() //获取短类名,如:ClassUtils
    • getClassFileName() //获取类文件名,如:ClassUtils.class
    • getPackageName() //获取包,如:org.apache.commons.lang3
    • getQualifiedName()//获取包名+类名,如:org.apache.commons.lang3.ClassUtils
  • ArrayUtils 数组的操作 array[]

    • add(array,3); //将3追加到数组后面
    • remove(array,3) //将数组下标为3的移除
    • subarray(array,1,3) //截取下标1-3的数组
    • clone() 拷贝
    • contains(array,"")//是否包含
    • index(array,""),返回保函的下标
    • isEquals(array,array1);//判断两个数组内部元素是否相等

beanutils 包

  • BeanUtils 前提条件,必须提供get/set方法

    • copyProperties(desc,src);//将src对象的值复制设置到desc对象中
    • populate(bean,Map);将对象的值映射到bean对象中
    • describe(bean)//将对象转化map
  • methondUtils 方法的集合

common-io包

  • FileUtil 与IOUtils

    • copyURLToFile(URL,file);//将url路径放入file
    • copyInputStreamToFile(input,file);//将input放入到file
    • copyToFile(intput,file);//inpout放入file
    • readFileToString(file);//将file内容读出为String
    • readFileToByteArray(file);//将file内容读出来为byte[]
    • readLines(file,"utf-8");//将file以行读出来放入集合,编码格式
    • writeStringToFile(file,str,"utf-8");//将字符串输入到file
  • FileAlterationMonitor文件监听

接下来是自己经常会用到的一个关于时间处理的类,该类中引用了slf4j-api包,用于日志输出。

import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Locale;
import java.util.TimeZone;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**
 * @author: ice
 * @create on:2018-04-12 23:25
 */
public class DateUtil {

  private static final Logger logger = LoggerFactory.getLogger(ODateu.class);

  public static final long SECOND = 1 * 1000;
  public static final long MINUTE = 60 * SECOND;
  public static final long HOUR = 60 * MINUTE;
  public static final long DAY = 24 * HOUR;
  public static final long WEEK = 7 * DAY;
  public static final TimeZone tz = TimeZone.getDefault();

  /**
   * 入参格式: Sat Nov 01 14:01:55 CST 2014.
   */
  public static final Date parseLocale(String date) {
    if (date == null) {
      return null;
    }
    try {
      return new SimpleDateFormat("EEE MMM dd HH:mm:ss zzz yyyy", Locale.US).parse(date);
    } catch (Exception e) {
      if (logger.isDebugEnabled()) {
        logger.debug("{}, date: {}", Misc.trace(e), date);
      }
      return null;
    }
  }

  /**
   * 入参格式: yyyy.
   */
  public static final Date parseDateyyyy(String date) {
    if (date == null) {
      return null;
    }
    try {
      return new SimpleDateFormat("yyyy").parse(date);
    } catch (Exception e) {
      if (logger.isDebugEnabled()) {
        logger.debug("{}, date: {}", Misc.trace(e), date);
      }
      return null;
    }
  }

  /**
   * 入参格式: yyyy-MM.
   */
  public static final Date parseDateyyyy_MM(String date) {
    if (date == null) {
      return null;
    }
    try {
      return new SimpleDateFormat("yyyy-MM").parse(date);
    } catch (Exception e) {
      if (logger.isDebugEnabled()) {
        logger.debug("{}, date: {}", Misc.trace(e), date);
      }
      return null;
    }
  }

  /**
   * 入参格式: yyyyMMdd.
   */
  public static final Date parseDateyyyyMMdd(String date) {
    if (date == null) {
      return null;
    }
    try {
      return new SimpleDateFormat("yyyyMMdd").parse(date);
    } catch (Exception e) {
      if (logger.isDebugEnabled()) {
        logger.debug("{}, date: {}", Misc.trace(e), date);
      }
      return null;
    }
  }

  /**
   * 入参格式: yyyy-MM-dd.
   */
  public static final Date parseDateyyyy_MM_dd(String date) {
    if (date == null) {
      return null;
    }
    try {
      return new SimpleDateFormat("yyyy-MM-dd").parse(date);
    } catch (Exception e) {
      if (logger.isDebugEnabled()) {
        logger.debug("{}, date: {}", Misc.trace(e), date);
      }
      return null;
    }
  }

  /**
   * 解析yyyyMMddHH格式的日期.
   */
  public static final Date parseDateyyyyMMddHH(String date) {
    if (date == null) {
      return null;
    }
    try {
      return new SimpleDateFormat("yyyyMMddHH").parse(date);
    } catch (Exception e) {
      if (logger.isDebugEnabled()) {
        logger.debug("{}, date: {}", Misc.trace(e), date);
      }
      return null;
    }
  }

  /**
   * 解析yyyyMMddHHmm格式的日期.
   */
  public static final Date parseDateyyyyMMddHHmm(String date) {
    if (date == null) {
      return null;
    }
    try {
      return new SimpleDateFormat("yyyyMMddHHmm").parse(date);
    } catch (Exception e) {
      if (logger.isDebugEnabled()) {
        logger.debug("{}, date: {}", Misc.trace(e), date);
      }
      return null;
    }
  }

  /**
   * 解析yyyyMMddHHmmss格式的日期.
   */
  public static final Date parseDateyyyyMMddHHmmss(String date) {
    if (date == null) {
      return null;
    }
    try {
      return new SimpleDateFormat("yyyyMMddHHmmss").parse(date);
    } catch (Exception e) {
      if (logger.isDebugEnabled()) {
        logger.debug("{}, date: {}", Misc.trace(e), date);
      }
      return null;
    }
  }

  /**
   * 解析yyyy-MM-dd HH:mm:ss格式的日期.
   */
  public static final Date parseDateyyyy_MM_dd_HH_mm_ss(String date) {
    if (date == null) {
      return null;
    }
    try {
      return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(date);
    } catch (Exception e) {
      if (logger.isDebugEnabled()) {
        logger.debug("{}, date: {}", Misc.trace(e), date);
      }
      return null;
    }
  }

  /**
   * 返回格式: yyyy-MM-dd.
   */
  public static final String parseDateyyyy_MM_dd(Date date) {
    return ODateu.parse(new SimpleDateFormat("yyyy-MM-dd"), date);
  }

  /**
   * 返回格式: yyyy-MM.
   */
  public static final String parseDateyyyy_MM(Date date) {
    return ODateu.parse(new SimpleDateFormat("yyyy-MM"), date);
  }

  /**
   * 返回格式:yyyy-MM-dd HH:mm:ss.
   */
  public static final String parseDateyyyyMMddHHmmss(Date date) {
    return ODateu.parse(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"), date);
  }

  /**
   * 返回格式:yyyy/MM/dd HH:mm.
   */
  public static final String parseDateyyyyMMddHHmm2(Date date) {
    return ODateu.parse(new SimpleDateFormat("yyyy/MM/dd HH:mm"), date);
  }

  /**
   * 返回格式:yyyyMMdd.
   */
  public static final String parseDateyyyyMMdd(Date date) {
    return ODateu.parse(new SimpleDateFormat("yyyyMMdd"), date);
  }

  /**
   * 返回格式:yyyyMMddHH.
   */
  public static final String parseDateyyyyMMddHH(Date date) {
    return ODateu.parse(new SimpleDateFormat("yyyyMMddHH"), date);
  }

  /**
   * 返回格式:yyyyMMddHHmmss.
   */
  public static final String parseDateyyyyMMddHHmmss2(Date date) {
    return ODateu.parse(new SimpleDateFormat("yyyyMMddHHmmss"), date);
  }

  /**
   * 返回格式:yyyyMMddHHmm.
   */
  public static final String parseDateyyyyMMddHHmm(Date date) {
    return ODateu.parse(new SimpleDateFormat("yyyyMMddHHmm"), date);
  }

  /**
   * 返回格式:MMddHHmmss.
   */
  public static final String parseDateMMddHHmmss(Date date) {
    return ODateu.parse(new SimpleDateFormat("MMddHHmmss"), date);
  }

  /**
   * 返回格式:HH:mm:ss.
   */
  public static final String parseDateHHmmss(Date date) {
    return ODateu.parse(new SimpleDateFormat("HH:mm:ss"), date);
  }

  /**
   * 返回格式: HH:mm:ss.ms.
   */
  public static final String parseDateHHmmssms(Date date) {
    long ms = date.getTime() % 1000;
    return ODateu.parse(new SimpleDateFormat("HH:mm:ss"), date) + "."
        + (ms > 99 ? ms : (ms > 9 ? ("0" + ms) : ("00" + ms)));
  }

  /**
   * 返回格式:yyyy-MM-dd HH:mm:ss.ms.
   */
  public static final String parseDateyyyyMMddHHmmssms(Date date) {
    long ms = date.getTime() % 1000;
    return ODateu.parse(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"), date) + "."
        + (ms > 99 ? ms : (ms > 9 ? ("0" + ms) : ("00" + ms)));
  }

  /**
   * 返回格式:yyyyMMddHHmmssms.
   */
  public static final String parseDateyyyyMMddHHmmssms2(Date date) {
    long ms = date.getTime() % 1000;
    return ODateu.parseDateyyyyMMddHHmmss2(date) + (ms > 99 ? ms
        : (ms > 9 ? ("0" + ms) : ("00" + ms)));
  }

  /**
   * 置为凌晨00:00:00 000,Calendar提供的set函数.
   */
  public static final Date set000000(Date date) {
    Calendar cal = Calendar.getInstance();
    cal.setTimeInMillis(date.getTime() - (date.getTime() % 1000));
    cal.set(cal.get(Calendar.YEAR), cal.get(Calendar.MONTH), cal.get(Calendar.DAY_OF_MONTH), 0, 0,
        0);
    return cal.getTime();
  }

  /**
   * 当前时间的hour, 小于10时前面补零.
   */
  public static final String hour(Date date) {
    Calendar cal = Calendar.getInstance();
    cal.setTime(date);
    int hour = cal.get(Calendar.HOUR_OF_DAY);
    return hour > 9 ? hour + "" : "0" + hour;
  }

  /**
   * 返回秒(0 ~ 59).
   */
  public static final int secondInt(Date date) {
    Calendar cal = Calendar.getInstance();
    cal.setTime(date);
    return cal.get(Calendar.SECOND);
  }

  /**
   * 返回分钟(0 ~ 59).
   */
  public static final int minuteInt(Date date) {
    Calendar cal = Calendar.getInstance();
    cal.setTime(date);
    return cal.get(Calendar.MINUTE);
  }

  /**
   * 返回小时(0 ~ 23).
   */
  public static final int hourInt(Date date) {
    Calendar cal = Calendar.getInstance();
    cal.setTime(date);
    return cal.get(Calendar.HOUR_OF_DAY);
  }

  /**
   * 返回天.
   */
  public static final int dayInt(Date date) {
    Calendar cal = Calendar.getInstance();
    cal.setTime(date);
    return cal.get(Calendar.DAY_OF_MONTH);
  }

  /**
   * 返回星期.
   */
  public static final int weekInt(Date date) {
    Calendar cal = Calendar.getInstance();
    cal.setTime(date);
    return cal.get(Calendar.WEEK_OF_YEAR);
  }

  /**
   * 星期几? (周期一返回1, 星期天返回7).
   */
  public static final int week(Date date) {
    Calendar cal = Calendar.getInstance();
    cal.setTime(date);
    int week = cal.get(Calendar.DAY_OF_WEEK);
    week -= 1;
    return week < 1 ? 7 : week;
  }

  /**
   * 返回月份.
   */
  public static final int monthInt(Date date) {
    Calendar cal = Calendar.getInstance();
    cal.setTime(date);
    return cal.get(Calendar.MONTH) + 1;
  }

  /**
   * 返回年份.
   */
  public static final int yearInt(Date date) {
    Calendar cal = Calendar.getInstance();
    cal.setTime(date);
    return cal.get(Calendar.YEAR);
  }

  /**
   * yyyymm整数形式.
   */
  public static final int yyyymm(Date date) {
    Calendar cal = Calendar.getInstance();
    cal.setTime(date);
    return cal.get(Calendar.YEAR) * 100 + (cal.get(Calendar.MONTH) + 1);
  }

  /**
   * yyyymmdd整数形式.
   */
  public static final int yyyymmdd(Date date) {
    Calendar cal = Calendar.getInstance();
    cal.setTime(date);
    return cal.get(Calendar.YEAR) * 10000 + (cal.get(Calendar.MONTH) + 1) * 100 + cal
        .get(Calendar.DAY_OF_MONTH);
  }

  /**
   * 返回这个月的总天数.
   */
  public static final int monthDays(Date date) {
    Calendar cal = Calendar.getInstance();
    cal.setTime(date);
    return cal.getActualMaximum(Calendar.DAY_OF_MONTH);
  }

  /**
   * 返回这个月的最后一天(时分秒跟随).
   */
  public static final Date montheLastDay(Date date) {
    Calendar cal = Calendar.getInstance();
    cal.setTime(date);
    Calendar ret = Calendar.getInstance();
    ret.set(cal.get(Calendar.YEAR), cal.get(Calendar.MONTH),
        cal.getActualMaximum(Calendar.DAY_OF_MONTH),
        cal.get(Calendar.HOUR_OF_DAY), cal.get(Calendar.MINUTE), cal.get(Calendar.SECOND));
    return ret.getTime();
  }

  /**
   * 返回这个月的第一天(00:00:00).
   */
  public static final Date monthFirstDay000000(Date date) {
    Calendar cal = Calendar.getInstance();
    cal.setTime(date);
    Calendar ret = Calendar.getInstance();
    ret.set(cal.get(Calendar.YEAR), cal.get(Calendar.MONTH),
        cal.getActualMinimum(Calendar.DAY_OF_MONTH), 0, 0, 0);
    return ret.getTime();
  }

  /**
   * 返回这个月的最后一天(23:59:59).
   */
  public static final Date monthLastDay235959(Date date) {
    Calendar cal = Calendar.getInstance();
    cal.setTime(date);
    Calendar ret = Calendar.getInstance();
    ret.set(cal.get(Calendar.YEAR), cal.get(Calendar.MONTH),
        cal.getActualMaximum(Calendar.DAY_OF_MONTH), 23, 59,
        59);
    return ret.getTime();
  }

  /**
   * 返回这一年的第一天(00:00:00).
   */
  public static final Date yearFirstDay000000(Date date) {
    Calendar cal = Calendar.getInstance();
    cal.setTime(date);
    Calendar ret = Calendar.getInstance();
    ret.set(cal.get(Calendar.YEAR), cal.getActualMinimum(Calendar.MONTH),
        cal.getActualMinimum(Calendar.DAY_OF_MONTH), 0, 0, 0);
    return ret.getTime();
  }

  /**
   * 返回这一年的最后一天(23:59:59).
   */
  public static final Date yearLastDay235959(Date date) {
    Calendar cal = Calendar.getInstance();
    cal.setTime(date);
    Calendar ret = Calendar.getInstance();
    ret.set(cal.get(Calendar.YEAR), cal.getActualMaximum(Calendar.MONTH),
        cal.getActualMaximum(Calendar.DAY_OF_MONTH), 23, 59, 59);
    return ret.getTime();
  }

  /**
   * 获取当前系统时区.
   */
  public static final int getTimezone() {
    return (int) (ODateu.tz.getRawOffset() / ODateu.HOUR);
  }

  /**
   * 将本地时间转换成指定时区的时间.
   */
  public static final long changeLocalTimeZone(long ts /* 本地时间, 毫秒. */,
      int gmt /* 指定时区偏移, 小时 . */) {
    return (ts - ODateu.tz.getRawOffset() /* 回归零时区. */) + (gmt * ODateu.HOUR);
  }

  /**
   * 将本地时间转换成指定时区的时间.
   */
  public static final Date changeLocalTimeZone2date(long ts /* 本地时间, 毫秒. */,
      int gmt /* 指定时区偏移, 小时 . */) {
    return new Date(ODateu.changeLocalTimeZone(ts, gmt));
  }

  /**
   * 返回当前时间在零时区的绝对时间.
   */
  public static final Date nowGmt0() {
    return new Date(System.currentTimeMillis() - ODateu.tz.getRawOffset() /* 回归零时区. */);
  }

  /**
   * 将指定GM+0时间回归到GMT+x.
   */
  public static final Date gotoGmtxOld(Date date /* 具有gmt0时区的绝对时间. */, int gmt /* 要返回的时区. */) {
    return new Date(date.getTime() + gmt * ODateu.HOUR);
  }

  /**
   * 将指定时间回归到GMT+0.
   */
  public static final Date gotoGmt0Old(Date date /* 具有gmt时区的绝对时间. */, int gmt /* date的时区. */) {
    return new Date((date.getTime() - gmt * ODateu.HOUR));
  }

  /**
   * 将本地时区绝对时间转换成目标时区的绝对时间.
   */
  public static final Date gotoGmtx(long ts /* 本时绝对时间. */, int gmtSec /* 要返回的时区(秒) */) {
    return new Date(
        (ts - ODateu.tz.getRawOffset() /* 去零时区. */) + (gmtSec * ODateu.SECOND /* 去目标时区. */));
  }

  /**
   * 将指定GMT+x时间回归到GMT+0.
   */
  public static final Date gmtxGoto0(Date date /* 具有gmtSec时区的绝对时间. */, int gmtSec /* date的时区. */) {
    return new Date((date.getTime() - gmtSec * ODateu.SECOND));
  }

  /**
   * 将指定GM+0时间回归到GMT+x.
   */
  public static final Date gmt0Gotox(Date date /* 具有gmt0时区的绝对时间. */, int gmtSec /* 要返回的时区(秒). */) {
    return new Date(date.getTime() + gmtSec * ODateu.SECOND);
  }

  /**
   * 本地时间去零时区.
   */
  public static final Date gotoGmt0(Date date /* 具有本地时区的时间 */) {
    return new Date(date.getTime() - ODateu.tz.getRawOffset());
  }

  /**
   * 零时区时间去本地时区.
   */
  public static final Date gotoLocal(Date date/* 具有0时区的时间. */) {
    return new Date(date.getTime() + ODateu.tz.getRawOffset());
  }

  /**
   * 判断两个日期是否在同一天.
   */
  public static final boolean isSameDay(Date arg0, Date arg1) {
    return (ODateu.yearInt(arg0) == ODateu.yearInt(arg1)) && //
        (ODateu.monthInt(arg0) == ODateu.monthInt(arg1)) && //
        (ODateu.dayInt(arg0) == ODateu.dayInt(arg1));
  }

  /**
   * 构造一个给定的时间.
   */
  public static final Date createDate(int year, int month, int day, int hourOfDay, int minute,
      int second) {
    Calendar cal = Calendar.getInstance();
    cal.set(year, month, day, hourOfDay, minute, second);
    return cal.getTime();
  }

  /**
   * 时间滚动, 按秒钟, up == true向今后滚动, 否则向以前滚动.
   */
  public static final Date dateRollOfSecond(Date date, int amount, boolean up) {
    return up ? new Date(date.getTime() + ((long) amount) * ODateu.SECOND)
        : new Date(date.getTime() - ((long) amount) * ODateu.SECOND);
  }

  /**
   * 时间滚动, 按分钟, up == true向今后滚动, 否则向以前滚动.
   */
  public static final Date dateRollOfMinute(Date date, int amount, boolean up) {
    return up ? new Date(date.getTime() + ((long) amount) * ODateu.MINUTE)
        : new Date(date.getTime() - ((long) amount) * ODateu.MINUTE);
  }

  /**
   * 时间滚动, 按小时, up == true向今后滚动, 否则向以前滚动.
   */
  public static final Date dateRollOfHour(Date date, int amount, boolean up) {
    return up ? new Date(date.getTime() + ((long) amount) * ODateu.HOUR)
        : new Date(date.getTime() - ((long) amount) * ODateu.HOUR);
  }

  /**
   * 时间滚动, 按天, up == true向今后滚动, 否则向以前滚动.
   */
  public static final Date dateRollOfDay(Date date, int amount, boolean up) {
    return up ? new Date(date.getTime() + ((long) amount) * ODateu.DAY)
        : new Date(date.getTime() - ((long) amount) * ODateu.DAY);
  }

  /**
   * 时间滚动, 按月, up == true向今后滚动, 否则向以前滚动.
   */
  public static final Date dateRollOfMonth(Date date, boolean up) {
    Calendar ca = Calendar.getInstance();
    ca.setTime(date);
    ca.roll(Calendar.MONTH, up);
    int m = ODateu.monthInt(date);
    if (m == 1 && !up) {
      ca.roll(Calendar.YEAR, false);
    }
    if (m == 12 && up) {
      ca.roll(Calendar.YEAR, true);
    }
    return ca.getTime();
  }

  /**
   * 时间滚动, 按年, up == true向今后滚动, 否则向以前滚动.
   */
  public static final Date dateRollOfYear(Date date, boolean up) {
    Calendar ca = Calendar.getInstance();
    ca.setTime(date);
    ca.roll(Calendar.YEAR, up);
    return ca.getTime();
  }

  /**
   * 清除分钟.
   */
  public static final Date clearMinute(Date date) {
    return new Date(date.getTime() - (date.getTime() % ODateu.HOUR));
  }

  /**
   * 清除小时.
   */
  public static final Date clearHour(Date date) {
    return ODateu.set000000(date);
  }

  /**
   * 秒转换为毫秒, 出现这个函数的原因时, 当前时间的秒数 * 1000后总是整数(4字节)溢出, 此函数则可避免出错.
   */
  public static final long sec2msec(long sec) {
    return sec * 1000L;
  }

  /**
   * 按格式解析日期.
   */
  private static final String parse(SimpleDateFormat format, Date date) {
    try {
      return date == null ? null : format.format(date);
    } catch (Exception e) {
      if (logger.isDebugEnabled()) {
        logger.debug("{}", Misc.trace(e));
      }
      return null;
    }
  }
}
  
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值