当我们遇上一些时间上的问题的时候就会出现一种疑惑,比如给会员续费的时候如何在原会员过期时间的基础上增加一个时间段呢?前些天在公司处理业务的时候遇上这个问题,于是自己写了一个时间段增加与减少的工具类。
附上代码:
/** * 通过计算获取增加时间或者减少时间 * 参数1、当前时间,2、增加还是减少标识符,3、时间段(天,周,月,季,半年,年),4、数量 */ public static Date test(Date currentData, Boolean isAdd, String type, Integer number) { //获取时间格式 Calendar cal = Calendar.getInstance(); if (currentData == null) { cal.setTime(new Date()); } else { cal.setTime(currentData); } switch (type) { case "year": if (isAdd) { cal.add(Calendar.YEAR, number); } else cal.set(Calendar.YEAR, cal.get(Calendar.YEAR) - number); break; case "halfYear": if (isAdd) { cal.add(Calendar.MONTH, +6); } else cal.set(Calendar.MONTH, cal.get(Calendar.MONTH) - 6); break; case "season": if (isAdd) { cal.add(Calendar.MONTH, +3); } else cal.set(Calendar.MONTH, cal.get(Calendar.MONTH) - 3); break; case "month": if (isAdd) { cal.add(Calendar.MONTH, +1); } else cal.set(Calendar.MONTH, cal.get(Calendar.MONTH) - 1); break; case "week": if (isAdd) { cal.add(Calendar.DATE, +7); } else cal.set(Calendar.DATE, cal.get(Calendar.DATE) - 7); break; case "day": if (isAdd) { cal.add(Calendar.DATE, +number); } else cal.set(Calendar.DATE, cal.get(Calendar.DATE) - number); break; default: if (isAdd) { cal.add(Calendar.DATE, +number); } else cal.set(Calendar.DATE, cal.get(Calendar.DATE) - number); break; } return cal.getTime(); }
测试代码:
public static void main(String[] arg) { SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Date date = test(new Date(), true, "year", 1); String date1 = simpleDateFormat.format(date); String date2 = simpleDateFormat.format(new Date()); System.out.println(date2 + "==============" + date1); }测试结果:
2017-11-13 11:20:55==============2018-11-13 11:20:55
Process finished with exit code 0
=====================分割线===================================================
电影《肖申克的救赎》里有个词“体制化(institutionalizing)“。虽然我们不是在监狱那种体制化,但我们在生活中是否存在某种“体制化”呢?