平时我们遇到日期的加减,感觉是相当麻烦的,以下是常用的日志加减的方法,包括日的加减、月的加减等,也包括了一些常用的日期格式化,这样在我们以后碰到日期加减的时候会省去很多麻烦,欢迎大神指正和吐槽:
1 package bp.util; 2 3 import java.text.ParseException; 4 import java.text.SimpleDateFormat; 5 import java.util.Calendar; 6 import java.util.Date; 7 8 public final class DateUtils 9 { 10 /** 11 * 英文简写(默认)如:2010-12-01 12 */ 13 public static String FORMAT_SHORT = "yyyy-MM-dd"; 14 /** 15 * 英文简写(默认)如:2010-12-01 16 */ 17 public static String FORMAT_DIY = "yyyy/MM/dd"; 18 19 /** 20 * 英文全称 如:2010-12-01 23:15:06 21 */ 22 public static String FORMAT_LONG = "yyyy-MM-dd HH:mm:ss"; 23 24 /** 25 * 精确到毫秒的完整时间 如:yyyy-MM-dd HH:mm:ss.S 26 */ 27 public static String FORMAT_FULL = "yyyy-MM-dd HH:mm:ss.S"; 28 29 /** 30 * 中文简写 如:2010年12月01日 31 */ 32 public static String FORMAT_SHORT_CN = "yyyy年MM月dd"; 33 34 /** 35 * 中文全称 如:2010年12月01日 23时15分06秒 36 */ 37 public static String FORMAT_LONG_CN = "yyyy年MM月dd日 HH时mm分ss秒"; 38 39 /** 40 * 精确到毫秒的完整中文时间 41 */ 42 public static String FORMAT_FULL_CN = "yyyy年MM月dd日 HH时mm分ss秒SSS毫秒"; 43 44 /** 45 * 获得默认的 date pattern 46 */ 47 public static String getDatePattern() { 48 return FORMAT_LONG; 49 } 50 /** 51 * 获得默认的 date 52 */ 53 public static String getDatePatt() { 54 return FORMAT_DIY; 55 } 56 public static String getDateShot() { 57 return FORMAT_SHORT; 58 } 59 /** 60 * 根据预设格式返回当前日期 61 * @return 62 */ 63 public static String getNow() { 64 return format(new Date()); 65 } 66 67 public static Date getDate(){ 68 return new Date(); 69 } 70 /** 71 * 根据用户格式返回当前日期 72 * @param format 73 * @return 74 */ 75 public static String getNow(String format) { 76 return format(new Date(), format); 77 } 78 79 80 /** 81 * 使用预设格式格式化日期 82 * @param date 83 * @return 84 */ 85 public static String format(Date date) { 86 return format(date, getDatePattern()); 87 } 88 /** 89 * 使用预设格式格式化日期 90 * @param date 91 * @return 92 */ 93 public static String format1(Date date) { 94 return format(date, getDatePatt()); 95 } 96 97 public static String format2(Date date) { 98 return format(date, getDateShot()); 99 }100 /**101 * 使用用户格式格式化日期102 * @param date 日期103 * @param pattern 日期格式104 * @return105 */106 public static String format(Date date, String pattern) {107 String returnValue = "";108 if (date != null) {109 SimpleDateFormat df = new SimpleDateFormat(pattern);110 returnValue = df.format(date);111 }112 return (returnValue);113 }114 115 /**116 * 使用预设格式提取字符串日期117 * @param strDate 日期字符串118 * @return119 */120 public static Date parse(String strDate) {121 return parse(strDate, getDatePattern());122 }123 124 public static Date parseShot(String strDate) {125 return parse(strDate, getDateShot());126 }127 128 /**129 * 使用用户格式提取字符串日期130 * @param strDate 日期字符串131 * @param pattern 日期格式132 * @return133 */134 public static Date parse(String strDate, String pattern) {135 SimpleDateFormat df = new SimpleDateFormat(pattern);136 try {137 return df.parse(strDate);138 } catch (ParseException e) {139 e.printStackTrace();140 return null;141 }142 }143 144 /**145 * 在日期上增加数个整月146 * @param date 日期147 * @param n 要增加的月数148 * @return149 */150 public static Date addMonth(Date date, int n) {151 Calendar cal = Calendar.getInstance();152 cal.setTime(date);153 cal.add(Calendar.MONTH, n);154 return cal.getTime();155 }156 157 /**158 * 在日期上增加天数159 * @param date 日期160 * @param n 要增加的天数161 * @return162 */163 public static Date addDay(Date date, int n) {164 Calendar cal = Calendar.getInstance();165 cal.setTime(date);166 cal.add(Calendar.DATE, n);167 return cal.getTime();168 }169 170 /**171 * 获取时间戳172 */173 public static String getTimeString() {174 SimpleDateFormat df = new SimpleDateFormat(FORMAT_FULL);175 Calendar calendar = Calendar.getInstance();176 return df.format(calendar.getTime());177 }178 179 /**180 * 获取日期年份181 * @param date 日期182 * @return183 */184 public static String getYear(Date date) {185 return format(date).substring(0, 4);186 }187 188 /**189 * 按默认格式的字符串距离今天的天数190 * @param date 日期字符串191 * @return192 */193 public static int countDays (String date) {194 long t = Calendar.getInstance().getTime().getTime();195 Calendar c = Calendar.getInstance();196 c.setTime(parse(date));197 long t1 = c.getTime().getTime();198 return (int)(t/1000 - t1/1000)/3600/24;199 }200 201 /**202 * 按用户格式字符串距离今天的天数203 * @param date 日期字符串204 * @param format 日期格式205 * @return206 */207 public static int countDays (String date, String format) {208 long t = Calendar.getInstance().getTime().getTime();209 Calendar c = Calendar.getInstance();210 c.setTime(parse(date, format));211 long t1 = c.getTime().getTime();212 return (int)(t/1000 - t1/1000)/3600/24;213 }214 215 /**216 * 217 * @Title: getBackTime 218 * @Description: TODO(这里用一句话描述这个方法的作用) 219 * @param @param timestr220 * @param @return 设定文件 221 * @return Date 返回类型 222 * @throws223 */224 public static Date getBackTime(String timestr) {225 Date curTime = new Date();226 Date startTime = DateUtils.addMonth(curTime, -12);227 if (timestr.equals("ONEYEAE")) {228 } else if (timestr.equals("TWOYEAR")) {229 startTime = DateUtils.addMonth(curTime, -12 * 2);230 } else if (timestr.equals("ALL")) {231 startTime = null;232 }233 return startTime;234 } 235 }