DateUtils.java 25 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754
  1. package org.jeecg.common.util;
  2. import org.springframework.util.StringUtils;
  3. import java.beans.PropertyEditorSupport;
  4. import java.sql.Timestamp;
  5. import java.text.DateFormat;
  6. import java.text.ParseException;
  7. import java.text.SimpleDateFormat;
  8. import java.util.*;
  9. /**
  10. * 类描述:时间操作定义类
  11. *
  12. * @Author: 张代浩
  13. * @Date:2012-12-8 12:15:03
  14. * @Version 1.0
  15. */
  16. public class DateUtils extends PropertyEditorSupport {
  17. /**
  18. * 以毫秒表示的时间
  19. */
  20. private static final long DAY_IN_MILLIS = 24 * 3600 * 1000;
  21. private static final long HOUR_IN_MILLIS = 3600 * 1000;
  22. private static final long MINUTE_IN_MILLIS = 60 * 1000;
  23. private static final long SECOND_IN_MILLIS = 1000;
  24. /**
  25. * 指定模式的时间格式
  26. *
  27. * @param pattern
  28. * @return
  29. */
  30. private static SimpleDateFormat getDateFormat(String pattern) {
  31. return new SimpleDateFormat(pattern);
  32. }
  33. /**
  34. * 当前日历,这里用中国时间表示
  35. *
  36. * @return 以当地时区表示的系统当前日历
  37. */
  38. public static Calendar getCalendar() {
  39. return Calendar.getInstance();
  40. }
  41. /**
  42. * 指定毫秒数表示的日历
  43. *
  44. * @param millis 毫秒数
  45. * @return 指定毫秒数表示的日历
  46. */
  47. public static Calendar getCalendar(long millis) {
  48. Calendar cal = Calendar.getInstance();
  49. // --------------------cal.setTimeInMillis(millis);
  50. cal.setTime(new Date(millis));
  51. return cal;
  52. }
  53. // ////////////////////////////////////////////////////////////////////////////
  54. // getDate
  55. // 各种方式获取的Date
  56. // ////////////////////////////////////////////////////////////////////////////
  57. /**
  58. * 当前日期
  59. *
  60. * @return 系统当前时间
  61. */
  62. public static Date getDate() {
  63. return new Date();
  64. }
  65. /**
  66. * 字符串转换成日期
  67. *
  68. * @param str
  69. * @param sdf
  70. * @return
  71. */
  72. public static Date str2Date(String str, SimpleDateFormat sdf) {
  73. if (null == str || "".equals(str)) {
  74. return null;
  75. }
  76. Date date = null;
  77. try {
  78. date = sdf.parse(str);
  79. return date;
  80. } catch (ParseException e) {
  81. e.printStackTrace();
  82. }
  83. return null;
  84. }
  85. /**
  86. * 日期转换为字符串
  87. *
  88. * @return 字符串
  89. */
  90. public static String date2Str() {
  91. SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
  92. Date date = getDate();
  93. if (null == date) {
  94. return null;
  95. }
  96. return format.format(date);
  97. }
  98. /**
  99. * 格式化时间
  100. *
  101. * @param date
  102. * @param format
  103. * @return
  104. */
  105. public static String dateformat(String date, String format) {
  106. SimpleDateFormat sformat = new SimpleDateFormat(format);
  107. Date getDate = null;
  108. try {
  109. getDate = sformat.parse(date);
  110. } catch (ParseException e) {
  111. e.printStackTrace();
  112. }
  113. return sformat.format(getDate);
  114. }
  115. /**
  116. * 日期转换为字符串
  117. *
  118. * @param format 日期格式
  119. * @return 字符串
  120. */
  121. public static String getDate(String format) {
  122. Date date = new Date();
  123. if (null == date) {
  124. return null;
  125. }
  126. SimpleDateFormat sdf = new SimpleDateFormat(format);
  127. return sdf.format(date);
  128. }
  129. /**
  130. * 指定毫秒数的时间戳
  131. *
  132. * @param millis 毫秒数
  133. * @return 指定毫秒数的时间戳
  134. */
  135. public static Timestamp getTimestamp(long millis) {
  136. return new Timestamp(millis);
  137. }
  138. /**
  139. * 以字符形式表示的时间戳
  140. *
  141. * @param time 毫秒数
  142. * @return 以字符形式表示的时间戳
  143. */
  144. public static Timestamp getTimestamp(String time) {
  145. return new Timestamp(Long.parseLong(time));
  146. }
  147. /**
  148. * 系统当前的时间戳
  149. *
  150. * @return 系统当前的时间戳
  151. */
  152. public static Timestamp getTimestamp() {
  153. return new Timestamp(System.currentTimeMillis());
  154. }
  155. /**
  156. * 当前时间,格式 yyyy-MM-dd HH:mm:ss
  157. *
  158. * @return 当前时间的标准形式字符串
  159. */
  160. public static String now() {
  161. SimpleDateFormat datetimeFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  162. return datetimeFormat.format(getCalendar().getTime());
  163. }
  164. /**
  165. * 指定日期的时间戳
  166. *
  167. * @param date 指定日期
  168. * @return 指定日期的时间戳
  169. */
  170. public static Timestamp getTimestamp(Date date) {
  171. return new Timestamp(date.getTime());
  172. }
  173. /**
  174. * 指定日历的时间戳
  175. *
  176. * @param cal 指定日历
  177. * @return 指定日历的时间戳
  178. */
  179. public static Timestamp getCalendarTimestamp(Calendar cal) {
  180. // ---------------------return new Timestamp(cal.getTimeInMillis());
  181. return new Timestamp(cal.getTime().getTime());
  182. }
  183. public static Timestamp gettimestamp() {
  184. Date dt = new Date();
  185. DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  186. String nowTime = df.format(dt);
  187. java.sql.Timestamp buydate = java.sql.Timestamp.valueOf(nowTime);
  188. return buydate;
  189. }
  190. // ////////////////////////////////////////////////////////////////////////////
  191. // getMillis
  192. // 各种方式获取的Millis
  193. // ////////////////////////////////////////////////////////////////////////////
  194. /**
  195. * 系统时间的毫秒数
  196. *
  197. * @return 系统时间的毫秒数
  198. */
  199. public static long getMillis() {
  200. return System.currentTimeMillis();
  201. }
  202. /**
  203. * 指定日历的毫秒数
  204. *
  205. * @param cal 指定日历
  206. * @return 指定日历的毫秒数
  207. */
  208. public static long getMillis(Calendar cal) {
  209. // --------------------return cal.getTimeInMillis();
  210. return cal.getTime().getTime();
  211. }
  212. /**
  213. * 指定日期的毫秒数
  214. *
  215. * @param date 指定日期
  216. * @return 指定日期的毫秒数
  217. */
  218. public static long getMillis(Date date) {
  219. return date.getTime();
  220. }
  221. /**
  222. * 指定时间戳的毫秒数
  223. *
  224. * @param ts 指定时间戳
  225. * @return 指定时间戳的毫秒数
  226. */
  227. public static long getMillis(Timestamp ts) {
  228. return ts.getTime();
  229. }
  230. // ////////////////////////////////////////////////////////////////////////////
  231. // formatDate
  232. // 将日期按照一定的格式转化为字符串
  233. // ////////////////////////////////////////////////////////////////////////////
  234. /**
  235. * 默认方式表示的系统当前日期,具体格式:年-月-日
  236. *
  237. * @return 默认日期按“年-月-日“格式显示
  238. */
  239. public static String formatDate() {
  240. SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
  241. return format.format(getCalendar().getTime());
  242. }
  243. /**
  244. * 默认方式表示的系统当前日期,具体格式:yyyy-MM-dd HH:mm:ss
  245. *
  246. * @return 默认日期按“yyyy-MM-dd HH:mm:ss“格式显示
  247. */
  248. public static String formatDateTime() {
  249. SimpleDateFormat datetimeFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  250. return datetimeFormat.format(getCalendar().getTime());
  251. }
  252. /**
  253. * 指定日期的默认显示,具体格式:年-月-日
  254. *
  255. * @param cal 指定的日期
  256. * @return 指定日期按“年-月-日“格式显示
  257. */
  258. public static String formatDate(Calendar cal) {
  259. SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
  260. return format.format(cal.getTime());
  261. }
  262. /**
  263. * 指定日期的默认显示,具体格式:年-月-日
  264. *
  265. * @param date 指定的日期
  266. * @return 指定日期按“年-月-日“格式显示
  267. */
  268. public static String formatDate(Date date) {
  269. SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
  270. return format.format(date);
  271. }
  272. /**
  273. * 指定毫秒数表示日期的默认显示,具体格式:年-月-日
  274. *
  275. * @param millis 指定的毫秒数
  276. * @return 指定毫秒数表示日期按“年-月-日“格式显示
  277. */
  278. public static String formatDate(long millis) {
  279. SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
  280. return format.format(new Date(millis));
  281. }
  282. /**
  283. * 默认日期按指定格式显示
  284. *
  285. * @param pattern 指定的格式
  286. * @return 默认日期按指定格式显示
  287. */
  288. public static String formatDate(String pattern) {
  289. return getDateFormat(pattern).format(getCalendar().getTime());
  290. }
  291. /**
  292. * 指定日期按指定格式显示
  293. *
  294. * @param cal 指定的日期
  295. * @param pattern 指定的格式
  296. * @return 指定日期按指定格式显示
  297. */
  298. public static String formatDate(Calendar cal, String pattern) {
  299. return getDateFormat(pattern).format(cal.getTime());
  300. }
  301. /**
  302. * 指定日期按指定格式显示
  303. *
  304. * @param date 指定的日期
  305. * @param pattern 指定的格式
  306. * @return 指定日期按指定格式显示
  307. */
  308. public static String formatDate(Date date, String pattern) {
  309. return getDateFormat(pattern).format(date);
  310. }
  311. // ////////////////////////////////////////////////////////////////////////////
  312. // formatTime
  313. // 将日期按照一定的格式转化为字符串
  314. // ////////////////////////////////////////////////////////////////////////////
  315. /**
  316. * 默认方式表示的系统当前日期,具体格式:年-月-日 时:分
  317. *
  318. * @return 默认日期按“年-月-日 时:分“格式显示
  319. */
  320. public static String formatTime() {
  321. SimpleDateFormat timeSdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");
  322. return timeSdf.format(getCalendar().getTime());
  323. }
  324. /**
  325. * 指定毫秒数表示日期的默认显示,具体格式:年-月-日 时:分
  326. *
  327. * @param millis 指定的毫秒数
  328. * @return 指定毫秒数表示日期按“年-月-日 时:分“格式显示
  329. */
  330. public static String formatTime(long millis) {
  331. SimpleDateFormat timeSdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");
  332. return timeSdf.format(new Date(millis));
  333. }
  334. /**
  335. * 指定日期的默认显示,具体格式:年-月-日 时:分
  336. *
  337. * @param cal 指定的日期
  338. * @return 指定日期按“年-月-日 时:分“格式显示
  339. */
  340. public static String formatTime(Calendar cal) {
  341. SimpleDateFormat timeSdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");
  342. return timeSdf.format(cal.getTime());
  343. }
  344. /**
  345. * 指定日期的默认显示,具体格式:年-月-日 时:分
  346. *
  347. * @param date 指定的日期
  348. * @return 指定日期按“年-月-日 时:分“格式显示
  349. */
  350. public static String formatTime(Date date) {
  351. SimpleDateFormat timeSdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");
  352. return timeSdf.format(date);
  353. }
  354. // ////////////////////////////////////////////////////////////////////////////
  355. // formatShortTime
  356. // 将日期按照一定的格式转化为字符串
  357. // ////////////////////////////////////////////////////////////////////////////
  358. /**
  359. * 默认方式表示的系统当前日期,具体格式:时:分
  360. *
  361. * @return 默认日期按“时:分“格式显示
  362. */
  363. public static String formatShortTime() {
  364. SimpleDateFormat shortTimeSdf = new SimpleDateFormat("HH:mm");
  365. return shortTimeSdf.format(getCalendar().getTime());
  366. }
  367. /**
  368. * 指定毫秒数表示日期的默认显示,具体格式:时:分
  369. *
  370. * @param millis 指定的毫秒数
  371. * @return 指定毫秒数表示日期按“时:分“格式显示
  372. */
  373. public static String formatShortTime(long millis) {
  374. SimpleDateFormat shortTimeSdf = new SimpleDateFormat("HH:mm");
  375. return shortTimeSdf.format(new Date(millis));
  376. }
  377. /**
  378. * 指定日期的默认显示,具体格式:时:分
  379. *
  380. * @param cal 指定的日期
  381. * @return 指定日期按“时:分“格式显示
  382. */
  383. public static String formatShortTime(Calendar cal) {
  384. SimpleDateFormat shortTimeSdf = new SimpleDateFormat("HH:mm");
  385. return shortTimeSdf.format(cal.getTime());
  386. }
  387. /**
  388. * 指定日期的默认显示,具体格式:时:分
  389. *
  390. * @param date 指定的日期
  391. * @return 指定日期按“时:分“格式显示
  392. */
  393. public static String formatShortTime(Date date) {
  394. SimpleDateFormat shortTimeSdf = new SimpleDateFormat("HH:mm");
  395. return shortTimeSdf.format(date);
  396. }
  397. // ////////////////////////////////////////////////////////////////////////////
  398. // parseDate
  399. // parseCalendar
  400. // parseTimestamp
  401. // 将字符串按照一定的格式转化为日期或时间
  402. // ////////////////////////////////////////////////////////////////////////////
  403. /**
  404. * 根据指定的格式将字符串转换成Date 如输入:2003-11-19 11:20:20将按照这个转成时间
  405. *
  406. * @param src 将要转换的原始字符窜
  407. * @param pattern 转换的匹配格式
  408. * @return 如果转换成功则返回转换后的日期
  409. * @throws ParseException
  410. * @throws
  411. */
  412. public static Date parseDate(String src, String pattern) throws ParseException {
  413. return getDateFormat(pattern).parse(src);
  414. }
  415. /**
  416. * 根据指定的格式将字符串转换成Date 如输入:2003-11-19 11:20:20将按照这个转成时间
  417. *
  418. * @param src 将要转换的原始字符窜
  419. * @param pattern 转换的匹配格式
  420. * @return 如果转换成功则返回转换后的日期
  421. * @throws ParseException
  422. * @throws
  423. */
  424. public static Calendar parseCalendar(String src, String pattern) throws ParseException {
  425. Date date = parseDate(src, pattern);
  426. Calendar cal = Calendar.getInstance();
  427. cal.setTime(date);
  428. return cal;
  429. }
  430. public static String formatAddDate(String src, String pattern, int amount) throws ParseException {
  431. Calendar cal;
  432. cal = parseCalendar(src, pattern);
  433. cal.add(Calendar.DATE, amount);
  434. return formatDate(cal);
  435. }
  436. /**
  437. * 根据指定的格式将字符串转换成Date 如输入:2003-11-19 11:20:20将按照这个转成时间
  438. *
  439. * @param src 将要转换的原始字符窜
  440. * @param pattern 转换的匹配格式
  441. * @return 如果转换成功则返回转换后的时间戳
  442. * @throws ParseException
  443. * @throws
  444. */
  445. public static Timestamp parseTimestamp(String src, String pattern) throws ParseException {
  446. Date date = parseDate(src, pattern);
  447. return new Timestamp(date.getTime());
  448. }
  449. // ////////////////////////////////////////////////////////////////////////////
  450. // dateDiff
  451. // 计算两个日期之间的差值
  452. // ////////////////////////////////////////////////////////////////////////////
  453. /**
  454. * 计算两个时间之间的差值,根据标志的不同而不同
  455. *
  456. * @param flag 计算标志,表示按照年/月/日/时/分/秒等计算
  457. * @param calSrc 减数
  458. * @param calDes 被减数
  459. * @return 两个日期之间的差值
  460. */
  461. public static int dateDiff(char flag, Calendar calSrc, Calendar calDes) {
  462. long millisDiff = getMillis(calSrc) - getMillis(calDes);
  463. if (flag == 'y') {
  464. return (calSrc.get(Calendar.YEAR) - calDes.get(Calendar.YEAR));
  465. }
  466. if (flag == 'd') {
  467. return (int) (millisDiff / DAY_IN_MILLIS);
  468. }
  469. if (flag == 'h') {
  470. return (int) (millisDiff / HOUR_IN_MILLIS);
  471. }
  472. if (flag == 'm') {
  473. return (int) (millisDiff / MINUTE_IN_MILLIS);
  474. }
  475. if (flag == 's') {
  476. return (int) (millisDiff / SECOND_IN_MILLIS);
  477. }
  478. return 0;
  479. }
  480. /**
  481. * String类型 转换为Date, 如果参数长度为10 转换格式”yyyy-MM-dd“ 如果参数长度为19 转换格式”yyyy-MM-dd
  482. * HH:mm:ss“ * @param text String类型的时间值
  483. */
  484. @Override
  485. public void setAsText(String text) throws IllegalArgumentException {
  486. SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
  487. SimpleDateFormat datetimeFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  488. if (StringUtils.hasText(text)) {
  489. try {
  490. if (text.indexOf(":") == -1 && text.length() == 10) {
  491. setValue(format.parse(text));
  492. } else if (text.indexOf(":") > 0 && text.length() == 19) {
  493. setValue(datetimeFormat.parse(text));
  494. } else {
  495. throw new IllegalArgumentException("Could not parse date, date format is error ");
  496. }
  497. } catch (ParseException ex) {
  498. IllegalArgumentException iae = new IllegalArgumentException("Could not parse date: " + ex.getMessage());
  499. iae.initCause(ex);
  500. throw iae;
  501. }
  502. } else {
  503. setValue(null);
  504. }
  505. }
  506. public static int getYear() {
  507. GregorianCalendar calendar = new GregorianCalendar();
  508. calendar.setTime(getDate());
  509. return calendar.get(Calendar.YEAR);
  510. }
  511. public static Date timeStampToDate(Long time) {
  512. SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//要转换的时间格式
  513. Date date;
  514. try {
  515. date = sdf.parse(sdf.format(time));
  516. return date;
  517. } catch (ParseException e) {
  518. e.printStackTrace();
  519. return null;
  520. }
  521. }
  522. public static List<Map<String, String>> getDateDayRange(String startDate, String endDate) throws ParseException {
  523. List<Map<String, String>> list = new ArrayList<>();
  524. String splitDate = DateUtils.addDay(endDate, -1);
  525. splitDate = DateUtils.addDay(splitDate, 1);
  526. if (DateUtils.compareDate(startDate, splitDate) >= 0) {
  527. Map<String, String> map = new HashMap<String, String>();
  528. map.put("startDate", startDate);
  529. map.put("endDate", endDate);
  530. list.add(map);
  531. } else {
  532. while (DateUtils.compareDate(startDate, splitDate) < 0 || DateUtils.compareDate(startDate, endDate) <= 0) {
  533. Map<String, String> map = new HashMap<String, String>();
  534. map.put("startDate", splitDate);
  535. map.put("endDate", endDate);
  536. list.add(map);
  537. splitDate = DateUtils.addDay(splitDate, -1);
  538. endDate = DateUtils.addDay(endDate, -1);
  539. if (DateUtils.compareDate(startDate, splitDate) > 0) {
  540. splitDate = startDate;
  541. }
  542. }
  543. }
  544. return list;
  545. }
  546. public static List<Map<String, String>> getDateWeekRange(String startDate, String endDate) throws ParseException {
  547. List<Map<String, String>> list = new ArrayList<Map<String, String>>();
  548. String splitDate = DateUtils.addWeek(endDate, -1);
  549. splitDate = DateUtils.addDay(splitDate, 1);
  550. if (DateUtils.compareDate(startDate, splitDate) >= 0) {
  551. Map<String, String> map = new HashMap<String, String>();
  552. map.put("startDate", startDate);
  553. map.put("endDate", endDate);
  554. list.add(map);
  555. } else {
  556. while (DateUtils.compareDate(startDate, splitDate) < 0 || DateUtils.compareDate(startDate, endDate) <= 0) {
  557. Map<String, String> map = new HashMap<String, String>();
  558. map.put("startDate", splitDate);
  559. map.put("endDate", endDate);
  560. list.add(map);
  561. splitDate = DateUtils.addWeek(splitDate, -1);
  562. endDate = DateUtils.addWeek(endDate, -1);
  563. if (DateUtils.compareDate(startDate, splitDate) > 0) {
  564. splitDate = startDate;
  565. }
  566. }
  567. }
  568. return list;
  569. }
  570. public static List<Map<String, String>> getDateMonthRange(String startDate, String endDate) throws ParseException {
  571. List<Map<String, String>> list = new ArrayList<Map<String, String>>();
  572. String splitDate = DateUtils.addMonth(endDate, -1);
  573. splitDate = DateUtils.addDay(splitDate, 1);
  574. if (DateUtils.compareDate(startDate, splitDate) >= 0) {
  575. Map<String, String> map = new HashMap<String, String>();
  576. map.put("startDate", startDate);
  577. map.put("endDate", endDate);
  578. list.add(map);
  579. } else {
  580. while (DateUtils.compareDate(startDate, splitDate) < 0 || DateUtils.compareDate(startDate, endDate) <= 0) {
  581. Map<String, String> map = new HashMap<String, String>();
  582. map.put("startDate", splitDate);
  583. map.put("endDate", endDate);
  584. list.add(map);
  585. splitDate = DateUtils.addMonth(splitDate, -1);
  586. endDate = DateUtils.addMonth(endDate, -1);
  587. if (DateUtils.compareDate(startDate, splitDate) > 0) {
  588. splitDate = startDate;
  589. }
  590. }
  591. }
  592. return list;
  593. }
  594. public static String addMonth(String dateString, int month) throws ParseException {
  595. SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
  596. Date date = sdf.parse(dateString);
  597. Calendar calendar = Calendar.getInstance();
  598. calendar.setTime(date);
  599. calendar.add(Calendar.MONTH, month);
  600. return sdf.format(calendar.getTime());
  601. }
  602. public static String addWeek(String dateString, int week) throws ParseException {
  603. SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
  604. Date date = sdf.parse(dateString);
  605. Calendar calendar = Calendar.getInstance();
  606. calendar.setTime(date);
  607. calendar.add(Calendar.WEEK_OF_YEAR, week);
  608. return sdf.format(calendar.getTime());
  609. }
  610. public static String addDay(String dateString, int day) throws ParseException {
  611. SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
  612. Date date = sdf.parse(dateString);
  613. Calendar calendar = Calendar.getInstance();
  614. calendar.setTime(date);
  615. calendar.add(Calendar.DAY_OF_YEAR, day);
  616. return sdf.format(calendar.getTime());
  617. }
  618. public static Date addDay(Date date, int day) {
  619. Calendar calendar = Calendar.getInstance();
  620. calendar.setTime(date);
  621. calendar.add(Calendar.DAY_OF_YEAR, day);
  622. return calendar.getTime();
  623. }
  624. public static Date addSecond(Date date, int seconds) {
  625. Calendar calendar = Calendar.getInstance();
  626. calendar.setTime(date);
  627. calendar.add(Calendar.SECOND, seconds);
  628. return calendar.getTime();
  629. }
  630. public static int compareDate(String firstDateString, String secondDateString) throws ParseException {
  631. SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
  632. Date firstDate = sdf.parse(firstDateString);
  633. Date secondDate = sdf.parse(secondDateString);
  634. long first = firstDate.getTime();
  635. long second = secondDate.getTime();
  636. return first == second ? 0 : (first > second ? 1 : -1);
  637. }
  638. public static String timeStamp2Date(Timestamp timeLong) {
  639. SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//要转换的时间格式
  640. Date date;
  641. try {
  642. date = sdf.parse(sdf.format(timeLong));
  643. return sdf.format(date);
  644. } catch (ParseException e) {
  645. e.printStackTrace();
  646. return null;
  647. }
  648. }
  649. public static String timeStamp2Date(long currentTimeMillis) {
  650. SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//要转换的时间格式
  651. Date date;
  652. try {
  653. date = sdf.parse(sdf.format(currentTimeMillis));
  654. return sdf.format(date);
  655. } catch (ParseException e) {
  656. e.printStackTrace();
  657. return null;
  658. }
  659. }
  660. public static Map<String, Object> getBeforeDate() {
  661. Date dNow = new Date(); //当前时间
  662. Date dBefore = new Date();
  663. Calendar calendar = Calendar.getInstance(); //得到日历
  664. calendar.setTime(dNow);//把当前时间赋给日历
  665. calendar.add(Calendar.DAY_OF_MONTH, -1); //设置为前一天
  666. dBefore = calendar.getTime(); //得到前一天的时间
  667. SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); //设置时间格式
  668. String defaultStartDate = sdf.format(dBefore); //格式化前一天
  669. defaultStartDate = defaultStartDate + " 00:00:00";
  670. String defaultEndDate = defaultStartDate.substring(0, 10) + " 23:59:59";
  671. Map<String, Object> map = new HashMap<>();
  672. map.put("startDate", defaultStartDate);
  673. map.put("endDate", defaultEndDate);
  674. return map;
  675. }
  676. }