DateUtil.java 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797
  1. package com.minpay.common.util;
  2. import java.text.DateFormat;
  3. import java.text.ParseException;
  4. import java.text.SimpleDateFormat;
  5. import java.util.Calendar;
  6. import java.util.Date;
  7. import java.util.GregorianCalendar;
  8. import javax.xml.bind.ValidationException;
  9. /**
  10. * @ClassName: DateUtil
  11. * @Description: 日期时间处理类
  12. * @author Michael
  13. * @date 2012-2-1 上午10:09:36
  14. * @version 1.0
  15. */
  16. public class DateUtil {
  17. public static final String DEFAULT_TIME_FORMAT_DB = "yyyyMMddHHmmss";
  18. /**
  19. * @Title: getCurrentDateString
  20. * @Description: 得到当前日期字符串:yyyymmdd
  21. * @return String:yyyyMMdd
  22. * @throws
  23. */
  24. public static String getCurrentDateString() {
  25. Calendar calendar = Calendar.getInstance();
  26. int month = calendar.get(Calendar.MONTH) + 1;
  27. int date = calendar.get(Calendar.DATE);
  28. return "" + calendar.get(Calendar.YEAR)
  29. + (month < 10 ? "0" + month : "" + month)
  30. + (date < 10 ? "0" + date : "" + date);
  31. }
  32. /**
  33. * @Title: getCurrentDateTimeString
  34. * @Description: 得到当前日期字符串:yyyyMMddHHmmss
  35. * @return String:yyyyMMddHHmmss
  36. * @throws
  37. */
  38. public static String getCurrentDateTimeString() {
  39. return getDifferentTime(0);
  40. }
  41. /**
  42. * 获取制定格式的日期
  43. *
  44. * @param format yyyyMMddHHmmss
  45. * yyyy
  46. * ddHHmm
  47. *
  48. * @return String
  49. */
  50. public static String getDifferentTimeByFormat( String format )
  51. {
  52. GregorianCalendar calendar = (GregorianCalendar) Calendar.getInstance();
  53. SimpleDateFormat formatter = new SimpleDateFormat( format );
  54. return formatter.format( calendar.getTime() );
  55. }
  56. /**
  57. * @Title: getCurrentDate
  58. * @Description: 得到当前日期字符串,适用于数据库为Date类型,yyyyMMddHHmmss
  59. * @return Date:yyyyMMddHHmmss
  60. * @throws
  61. */
  62. public static java.util.Date getCurrentDate() {
  63. return new java.util.Date();
  64. }
  65. // 判断两日期格式是否相等
  66. public static boolean isDateEqual(java.util.Date date1, java.util.Date date2) {
  67. java.util.Calendar cal1 = java.util.Calendar.getInstance();
  68. cal1.setTime(date1);
  69. java.util.Calendar cal2 = java.util.Calendar.getInstance();
  70. cal2.setTime(date2);
  71. return (cal1.get(java.util.Calendar.YEAR) == cal2
  72. .get(java.util.Calendar.YEAR)
  73. && cal1.get(java.util.Calendar.MONTH) == cal2
  74. .get(java.util.Calendar.MONTH) && cal1
  75. .get(java.util.Calendar.DAY_OF_MONTH) == cal2
  76. .get(java.util.Calendar.DAY_OF_MONTH));
  77. }
  78. // 将格式为“20060302”形式的字符串转换成日期类型yyyy-MM-dd
  79. public static java.util.Date getToDate(String s) {
  80. StringBuffer sb = new StringBuffer();
  81. sb.append(s.substring(0, 4)).append("-").append(s.substring(4, 6))
  82. .append("-").append(s.substring(6, 8));
  83. SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
  84. java.util.Date obj = null;
  85. try {
  86. obj = sdf.parse(sb.toString());
  87. } catch (ParseException e) {
  88. //自动生成 catch 块
  89. e.printStackTrace();
  90. System.err.println("change date type error");
  91. }
  92. return obj;
  93. }
  94. // 将格式为“2006-02-23”的日期字符串转化为日期类型
  95. /**
  96. * 将格式为“2006-02-23”的日期字符串转化为日期类型 格式为"2004-10-10" --> Date
  97. * <p>
  98. * <code> checkStartEndDate </code>
  99. * </p>
  100. *
  101. * @param context
  102. * @throws ValidationException
  103. * @author Songyi 2004-12-15
  104. * @since 1.1
  105. */
  106. public static java.util.Date getString2Date(String sDate) {
  107. SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
  108. java.util.Date obj = null;
  109. try {
  110. obj = sdf.parse(sDate);
  111. } catch (ParseException e) {
  112. e.printStackTrace();
  113. System.err.println("change date type error");
  114. }
  115. return obj;
  116. }
  117. // 判断当前的字符串是否为当前日期
  118. public static boolean isCurrentDate(String strDate) {
  119. return strDate == null || !strDate.equals(getCurrentDateString()) ? false
  120. : true;
  121. }
  122. // 取当前日期前一天或后一天,up传true表示取当前的前一天,up传false表示取当前日期的后一天
  123. public static String rollDate(java.util.Date date, boolean up) {
  124. if (date == null)
  125. return null;
  126. GregorianCalendar beforeCalendar = new GregorianCalendar();
  127. beforeCalendar.setTime(date);
  128. beforeCalendar.add(Calendar.DATE, up ? +1 : -1);
  129. int beforeDate = beforeCalendar.get(Calendar.DATE);
  130. int beforeMonth = beforeCalendar.get(Calendar.MONTH) + 1;
  131. int beforeYear = beforeCalendar.get(Calendar.YEAR);
  132. return "" + beforeYear
  133. + (beforeMonth < 10 ? "0" + beforeMonth : "" + beforeMonth)
  134. + (beforeDate < 10 ? "0" + beforeDate : "" + beforeDate);
  135. }
  136. // 返回年月日方式或者年月日时分方式对应的日期时间
  137. /**
  138. * @param str
  139. * @return
  140. */
  141. public static Date String2Date(String str) {
  142. try {
  143. SimpleDateFormat s1 = new SimpleDateFormat("yyyyMMdd");
  144. SimpleDateFormat s2 = new SimpleDateFormat("yyyyMMddHHmm");
  145. SimpleDateFormat s3 = new SimpleDateFormat("yyyyMMddHHmmss");
  146. if (str.length() == 8) {
  147. return s1.parse(str);
  148. } else if (str.length() == 12) {
  149. return s2.parse(str);
  150. } else if (str.length() == 14) {
  151. return s3.parse(str);
  152. } else {
  153. throw new RuntimeException("validation.date.parse_error");
  154. }
  155. } catch (Exception e) {
  156. e.printStackTrace();
  157. throw new RuntimeException("adsasd");
  158. }
  159. }
  160. // 比较2个日期:返回-1,1,0
  161. /**
  162. * @param StartDate
  163. * @param EndDate
  164. * @return
  165. */
  166. public static int DateCompare(String StartDate, String EndDate) {
  167. Date start = String2Date(StartDate);
  168. Date end = String2Date(EndDate);
  169. if (start.before(end)) {
  170. return -1;
  171. } else if (start.after(end)) {
  172. return 1;
  173. } else
  174. return 0;
  175. }
  176. // 比较2个时间:返回-1,1,0
  177. /**
  178. * @param StartTime
  179. * @param EndTime
  180. * @return
  181. */
  182. public static int TimeCompare(String StartTime, String EndTime) {
  183. if ((StartTime.length() != 4) || (EndTime.length() != 4)) {
  184. throw new RuntimeException("validation.time.parse_error");
  185. }
  186. int startHour = Integer.parseInt(StartTime.substring(0, 2));
  187. int startMin = Integer.parseInt(StartTime.substring(2, 4));
  188. int endHour = Integer.parseInt(EndTime.substring(0, 2));
  189. int endMin = Integer.parseInt(EndTime.substring(2, 4));
  190. if (startHour < endHour) {
  191. return -1;
  192. } else if (startHour > endHour) {
  193. return 1;
  194. } else {
  195. if (startMin < endMin) {
  196. return -1;
  197. } else if (startMin > endMin) {
  198. return 1;
  199. } else
  200. return 0;
  201. }
  202. }
  203. // 获得从now开始iMonth个月前的一天
  204. /**
  205. * @param now
  206. * @param iMonth
  207. * @return
  208. */
  209. public static Date getDateBefore(Date now, int iMonth) {
  210. Calendar c = Calendar.getInstance();
  211. c.setTime(now);
  212. int year = c.get(Calendar.YEAR);
  213. int month = c.get(Calendar.MONTH);
  214. int day = c.get(Calendar.DAY_OF_MONTH);
  215. month = month - iMonth;
  216. if (month < 1) {
  217. month = month + 12;
  218. year = year - 1;
  219. }
  220. c.set(Calendar.YEAR, year);
  221. c.set(Calendar.MONTH, month);
  222. c.set(Calendar.DAY_OF_MONTH, day);
  223. return c.getTime();
  224. }
  225. // 获得从now开始iMonth个月后的一天
  226. /**
  227. * @param now
  228. * @param iMonth
  229. * @return
  230. */
  231. public static Date getDateAfter(Date now, int iMonth) {
  232. Calendar c = Calendar.getInstance();
  233. c.setTime(now);
  234. int year = c.get(Calendar.YEAR);
  235. int month = c.get(Calendar.MONTH);
  236. int day = c.get(Calendar.DAY_OF_MONTH);
  237. month = month + iMonth;
  238. if (month > 12) {
  239. month = month - 12;
  240. year = year + 1;
  241. }
  242. c.set(Calendar.YEAR, year);
  243. c.set(Calendar.MONTH, month);
  244. c.set(Calendar.DAY_OF_MONTH, day);
  245. return c.getTime();
  246. }
  247. public static Date getLastDay(Date now) {
  248. Calendar c = Calendar.getInstance();
  249. c.setTime(now);
  250. int day = c.get(Calendar.DAY_OF_MONTH);
  251. c.set(Calendar.DAY_OF_MONTH, day - 1);
  252. return c.getTime();
  253. }
  254. // 得到当前日期的开始时间
  255. /**
  256. * 得到当前日期的开始时间
  257. *
  258. * @param now
  259. * @return
  260. */
  261. public static Date getDayStart(Date now) {
  262. Calendar c = Calendar.getInstance();
  263. c.setTime(now);
  264. c.set(Calendar.HOUR_OF_DAY, 0);
  265. c.set(Calendar.MINUTE, 0);
  266. c.set(Calendar.SECOND, 0);
  267. return c.getTime();
  268. }
  269. // 得到当前日期的结束时间
  270. /**
  271. * 得到当前日期的结束时间
  272. *
  273. * @param now
  274. * @return
  275. */
  276. public static Date getDayEnd(Date now) {
  277. Calendar c = Calendar.getInstance();
  278. c.setTime(now);
  279. c.set(Calendar.HOUR_OF_DAY, 23);
  280. c.set(Calendar.MINUTE, 59);
  281. c.set(Calendar.SECOND, 59);
  282. return c.getTime();
  283. }
  284. /**
  285. * 得到当前日期的前一个月的第一天/最后一天
  286. * @param now
  287. * @return
  288. */
  289. public static String getBeforeMonth(boolean bool) {
  290. SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd");
  291. Calendar cale = Calendar.getInstance();
  292. String backTime = null;
  293. if(bool){
  294. // 获取前月的第一天
  295. cale.add(Calendar.MONTH, -1);
  296. cale.set(Calendar.DAY_OF_MONTH, 1);
  297. backTime = format.format(cale.getTime())+"000000";
  298. }else{
  299. // 获取前月的最后一天
  300. cale.add(Calendar.MONTH, 0);
  301. cale.set(Calendar.DAY_OF_MONTH, 0);
  302. backTime = format.format(cale.getTime())+"235959";
  303. }
  304. return backTime;
  305. }
  306. // 判断输入的日期是否符合要求,1、3、5、7、8、10、12月日期不能大于31日,4、6、9、11月不能日期不能大于30日,2月平年不能大于28日,润年不能大于29日
  307. public static boolean isDateValid(String inStr) {
  308. int year, month, day;
  309. year = Integer.parseInt(inStr.substring(0, 4));
  310. if (inStr.indexOf(4) == '0') {
  311. month = Integer.parseInt(inStr.substring(5, 6));
  312. } else {
  313. month = Integer.parseInt(inStr.substring(4, 6));
  314. }
  315. if (inStr.indexOf(6) == '0') {
  316. day = Integer.parseInt(inStr.substring(7, 8));
  317. } else {
  318. day = Integer.parseInt(inStr.substring(6, 8));
  319. }
  320. if (month > 12 || day > 31 || month < 1 || day < 1)
  321. return false;
  322. if (month == 4 || month == 6 || month == 9 || month == 11) {
  323. if (day > 30)
  324. return false;
  325. }
  326. if (month == 2) {
  327. if (year % 4 == 0) {
  328. if (day > 29)
  329. return false;
  330. } else {
  331. if (day > 28)
  332. return false;
  333. }
  334. }
  335. return true;
  336. }
  337. /**
  338. * 取得指定时间间隔后的系统时间
  339. *
  340. * @param hour
  341. * 小时
  342. * @return String
  343. */
  344. public static String getDifferentTime( int hour )
  345. {
  346. GregorianCalendar calendar = (GregorianCalendar) Calendar.getInstance();
  347. calendar.add( Calendar.HOUR, hour );
  348. SimpleDateFormat formatter = new SimpleDateFormat( DEFAULT_TIME_FORMAT_DB );
  349. return formatter.format( calendar.getTime() );
  350. }
  351. /**
  352. * 取得指定时间间隔后的系统时间
  353. *
  354. * @param minutes
  355. *
  356. * @return String
  357. */
  358. public static String getDifferentTimeByMinute( int minutes )
  359. {
  360. GregorianCalendar calendar = (GregorianCalendar) Calendar.getInstance();
  361. calendar.add( Calendar.MINUTE, minutes);
  362. SimpleDateFormat formatter = new SimpleDateFormat( DEFAULT_TIME_FORMAT_DB );
  363. return formatter.format( calendar.getTime() );
  364. }
  365. public static String getDifferentTimeByMinute(String date1, int minutes,
  366. String format) {
  367. Calendar cal1 = Calendar.getInstance();
  368. SimpleDateFormat formatter = new SimpleDateFormat(format);
  369. try {
  370. cal1.setTime(formatter.parse(date1));
  371. cal1.add(Calendar.MINUTE, minutes);
  372. } catch (ParseException e) {
  373. e.printStackTrace();
  374. }
  375. return formatter.format(cal1.getTime());
  376. }
  377. /**
  378. * 取得若干天前/后的系统日期
  379. *
  380. * @param days
  381. * 与现在相隔的日数,正数为当前日期之后,负数为当前日期之前
  382. * @return String
  383. */
  384. public static String getDifferentDate(int days) {
  385. return getDifferentTime(24 * days);
  386. }
  387. /**
  388. * 比较日期时间
  389. *
  390. *
  391. */
  392. public static int dateTimeCompare(String date1,String date2) {
  393. Calendar cal1 = Calendar.getInstance();
  394. Calendar cal2 = Calendar.getInstance();
  395. SimpleDateFormat formatter = new SimpleDateFormat( DEFAULT_TIME_FORMAT_DB );
  396. try {
  397. cal1.setTime(formatter.parse(date1));
  398. cal2.setTime(formatter.parse(date2));
  399. } catch (ParseException e) {
  400. e.printStackTrace();
  401. }
  402. int result=cal1.compareTo(cal2);
  403. return result;
  404. }
  405. /**
  406. * 根据指定格式比较时间
  407. *
  408. *
  409. */
  410. public static int dateTimeCompare(String date1, String date2, String format) {
  411. Calendar cal1 = Calendar.getInstance();
  412. Calendar cal2 = Calendar.getInstance();
  413. SimpleDateFormat formatter = new SimpleDateFormat(
  414. format);
  415. try {
  416. cal1.setTime(formatter.parse(date1));
  417. cal2.setTime(formatter.parse(date2));
  418. } catch (ParseException e) {
  419. e.printStackTrace();
  420. }
  421. int result = cal1.compareTo(cal2);
  422. return result;
  423. }
  424. // 主函数
  425. /**
  426. * @param args
  427. */
  428. public static void main(String[] args) {
  429. // 公共函数测试
  430. String enddate="20170112150922";
  431. System.out.println(enddate.substring(6, 14));
  432. // Date date1 = new Date();
  433. // Date date2 = new Date();
  434. // System.out.println("date1=" + date1 + " date2=" + date2);
  435. // System.out.println("isDateEqual(date1,date2)="
  436. // + isDateEqual(date1, date2));
  437. // System.out.println(dateTimeCompare("20131009090910","20131009090909"));
  438. // System.out.println(dateTimeCompare("20131109090909","20131009090909"));
  439. // System.out.println("getCurrentDateString()=" + getCurrentDateString());
  440. //
  441. // System.out.println("rollDate()=" + rollDate(new Date(), false));
  442. //
  443. // String StartDate = "20060489";
  444. // String EndDate = "20060403";
  445. // Date start = String2Date(StartDate);
  446. // Date end = String2Date(EndDate);
  447. //
  448. // System.out.println("start=" + start + " end=" + end);
  449. //
  450. // // 查询截止时间应在当天前的测试
  451. // Date now = new Date(System.currentTimeMillis());
  452. // String yestodayStr = rollDate(now, false);
  453. // System.out.println(yestodayStr);
  454. // Date yestoday = String2Date(yestodayStr);
  455. // System.out.println(yestoday);
  456. //
  457. // System.out.println("start=" + start + ";end=" + end + "now="
  458. // + getDayStart(now));
  459. // if (start.after(getDayStart(now)) || isDateEqual(start, now))
  460. // System.out.println("a");
  461. // if ((!start.before(now)) || (!end.before(now))
  462. // || (isDateEqual(start, now)) || (isDateEqual(end, now))) {
  463. // System.out.println("adsadfa");
  464. // }
  465. //
  466. // // 字符串匹配的测试
  467. // Pattern p = Pattern
  468. // .compile("([1-9]{1}[0-9]{3})(([0]{1}[1-9]{1})|([1]{1}[0-2]{1}))(([0]{1}[1-9]{1})|([1-2]{1}[0-9]{1})|([3]{1}[0-1]{1}))");
  469. // Matcher m = p.matcher("19990131");
  470. // boolean b = m.matches();
  471. // System.out.println(b);
  472. //
  473. // String bankSeqAndinputCode = "|adsfadsfa";
  474. // System.out.println(bankSeqAndinputCode.indexOf('|'));
  475. // String bankSeq = bankSeqAndinputCode.substring(0,
  476. // bankSeqAndinputCode.indexOf('|'));
  477. // String inputCode = bankSeqAndinputCode.substring(
  478. // bankSeqAndinputCode.indexOf('|') + 1,
  479. // bankSeqAndinputCode.length());
  480. // System.out.println("bankSeq=" + bankSeq + " inputCode=" + inputCode);
  481. //
  482. // Map map = new HashMap();
  483. // map.put("name", "ldl");
  484. // map.put("sex", "mail");
  485. // map.put("age", "26");
  486. //
  487. // // method1
  488. // Iterator keyValuePairs1 = map.entrySet().iterator();
  489. // for (int i = 0; i < map.size(); i++) {
  490. // Map.Entry entry = (Map.Entry) keyValuePairs1.next();
  491. // Object key = entry.getKey();
  492. // Object value = entry.getValue();
  493. // System.out.println("key[" + i + "]=" + key + " value[" + i + "]="
  494. // + value);
  495. // }
  496. // System.out.println();
  497. //
  498. // // method2
  499. // Object[] keyValuePairs2 = map.entrySet().toArray();
  500. // for (int i = 0; i < map.size(); i++) {
  501. // Map.Entry entry = (Map.Entry) keyValuePairs2[i];
  502. // Object key = entry.getKey();
  503. // Object value = entry.getValue();
  504. // System.out.println("key[" + i + "]=" + key + " value[" + i + "]="
  505. // + value);
  506. // }
  507. // System.out.println();
  508. //
  509. // // method3
  510. // Iterator keyValuePairs3 = map.entrySet().iterator();
  511. // int i = 0;
  512. // while (keyValuePairs3.hasNext()) {
  513. // i++;
  514. // Map.Entry entry = (Map.Entry) keyValuePairs3.next();
  515. // Object key = entry.getKey();
  516. // Object value = entry.getValue();
  517. // System.out.println("key[" + i + "]=" + key + " value[" + i + "]="
  518. // + value);
  519. // }
  520. // System.out.println();
  521. //
  522. // // method4:error
  523. // Iterator keyValuePairs4 = map.entrySet().iterator();
  524. // for (Map.Entry entry = (Map.Entry) keyValuePairs4.next(); keyValuePairs4
  525. // .hasNext(); entry = (Map.Entry) keyValuePairs4.next()) {
  526. // Object key = entry.getKey();
  527. // Object value = entry.getValue();
  528. // System.out.println("key[" + i + "]=" + key + " value[" + i + "]="
  529. // + value);
  530. // }
  531. // System.out.println();
  532. //
  533. // // 日期格式判断的测试
  534. // System.out.println(isDateValid("20040229"));
  535. // Properties p1 = new Properties();
  536. // p1.setProperty("1", "2");
  537. // System.out.println(p1.toString());
  538. }
  539. /**
  540. *
  541. * @Title: parseDate
  542. * @Description: 把字符串解析为日期
  543. * @param dateStr
  544. * @param format
  545. * @return Date
  546. */
  547. public static Date parseDate(String dateStr, String format) {
  548. Date date = null;
  549. try {
  550. DateFormat df = new SimpleDateFormat(format);
  551. date = (Date) df.parse(dateStr);
  552. } catch (Exception e) {
  553. e.printStackTrace();
  554. }
  555. return date;
  556. }
  557. /**
  558. * @Title: format
  559. * @Description: 把日期格式化输出为字符串
  560. * @param date
  561. * @param format
  562. * @return String
  563. */
  564. public static String format(Date date, String format) {
  565. String result = "";
  566. try {
  567. if (date != null) {
  568. DateFormat df = new SimpleDateFormat(format);
  569. result = df.format(date);
  570. }
  571. } catch (Exception e) {
  572. }
  573. return result;
  574. }
  575. /**
  576. *
  577. * @Title: getMillis
  578. * @Description: 返回当前毫秒
  579. * @param date
  580. * @return
  581. */
  582. public static long getMillis(java.util.Date date) {
  583. java.util.Calendar c = java.util.Calendar.getInstance();
  584. c.setTime(date);
  585. return c.getTimeInMillis();
  586. }
  587. /**
  588. * @Title: diffDate
  589. * @Description: 两个日期相差几天
  590. * @param dateStart
  591. * @param dateEnd
  592. * @return
  593. */
  594. public static int diffDate(java.util.Date dateStart, java.util.Date dateEnd) {
  595. return (int) ((getMillis(dateStart) - getMillis(dateEnd)) / (24 * 3600 * 1000));
  596. }
  597. /**
  598. * 昨天
  599. * @param c
  600. * @return
  601. */
  602. public static Calendar yesterday(Calendar c){
  603. long offset = 1*24*60*60*1000;
  604. Calendar calendar = null;
  605. if(c != null){
  606. calendar = c;
  607. }else{
  608. calendar = Calendar.getInstance();
  609. }
  610. calendar.setTimeInMillis(calendar.getTimeInMillis() - offset);
  611. return calendar;
  612. }
  613. /**
  614. * 明天
  615. * @param c
  616. * @return
  617. */
  618. public static Calendar tomorrow(Calendar c){
  619. long offset = 1*24*60*60*1000;
  620. Calendar calendar = null;
  621. if(c != null){
  622. calendar = c;
  623. }else{
  624. calendar = Calendar.getInstance();
  625. }
  626. calendar.setTimeInMillis(calendar.getTimeInMillis() + offset);
  627. return calendar;
  628. }
  629. /**
  630. * 微信接口使用,计算时间差
  631. * @param startTime
  632. * @param endTime
  633. * @return
  634. */
  635. public static Long dateDiff(String startTime,
  636. String endTime) {
  637. // 按照传入的格式生成一个simpledateformate对象
  638. SimpleDateFormat sd = new SimpleDateFormat("yyyyMMddHHmmss");
  639. long nd = 1000 * 24 * 60 * 60;// 一天的毫秒数
  640. long nh = 1000 * 60 * 60;// 一小时的毫秒数
  641. long nm = 1000 * 60;// 一分钟的毫秒数
  642. long diff;
  643. long day = 0;
  644. long hour = 0;
  645. long min = 0;
  646. // 获得两个时间的毫秒时间差异
  647. try {
  648. diff = sd.parse(endTime).getTime() - sd.parse(startTime).getTime();
  649. day = diff / nd;// 计算差多少天
  650. hour = diff % nd / nh + day * 24;// 计算差多少小时
  651. min = diff % nd % nh / nm + hour * 60;// 计算差多少分钟
  652. return min;
  653. } catch (ParseException e) {
  654. e.printStackTrace();
  655. }
  656. return min;
  657. }
  658. /**
  659. * @Title: getBeforeDateTimeString
  660. * @Description: 得到当前日期前N分钟时间字符串:yyyyMMddHHmmss
  661. * @return String:yyyyMMddHHmmss
  662. * @throws
  663. */
  664. public static String getBeforeDateTimeString(int minute) {
  665. Calendar calendar = Calendar.getInstance();
  666. calendar.add(Calendar.MINUTE, minute);
  667. SimpleDateFormat formatter = new SimpleDateFormat( DEFAULT_TIME_FORMAT_DB );
  668. return formatter.format( calendar.getTime() );
  669. }
  670. /**
  671. * 指定日期加上天数后的日期
  672. * @param num 为增加的天数
  673. * @param newDate 创建时间
  674. * @return
  675. * @throws ParseException
  676. */
  677. public static String plusDay(int num,String newDate) throws ParseException{
  678. SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd");
  679. Date currdate = format.parse(newDate);
  680. //Calendar c = Calendar.getInstance();
  681. System.out.println("当前日期:"+format.format(currdate.getTime()));
  682. Calendar calendar = Calendar.getInstance();
  683. calendar.setTime(currdate);
  684. calendar.add(Calendar.DATE, num);
  685. String enddate = format.format(calendar.getTime());
  686. System.out.println("增加天数以后的日期:" + enddate);
  687. return enddate;
  688. }
  689. /**
  690. * 获取本月第一天
  691. * @return
  692. */
  693. public static String getmindate(){
  694. Calendar calendar = Calendar.getInstance();
  695. calendar.setTime(new Date());
  696. calendar.set(Calendar.DAY_OF_MONTH, calendar.getActualMinimum(Calendar.DAY_OF_MONTH));
  697. return String.valueOf(calendar.getTime());
  698. }
  699. /**
  700. * 获取本月最后一天
  701. * @return
  702. */
  703. public static String getmaxdate(){
  704. Calendar calendar2 = Calendar.getInstance();
  705. calendar2.setTime(new Date());
  706. calendar2.set(Calendar.DAY_OF_MONTH, calendar2.getActualMaximum(Calendar.DAY_OF_MONTH));
  707. return String.valueOf(calendar2.getTime());
  708. }
  709. }