当前位置:   article > 正文

日期工具类(格式化日期)_calendar 格式化

calendar 格式化
  1. package com.atc.frame.base.utils;
  2. import org.slf4j.Logger;
  3. import java.text.ParseException;
  4. import java.text.SimpleDateFormat;
  5. import java.time.Instant;
  6. import java.util.*;
  7. /**
  8. * 日期工具类
  9. *
  10. * @author yechao
  11. * @date 2013年12月12日
  12. */
  13. public class DateUtils extends org.apache.commons.lang3.time.DateUtils {
  14. private static final Logger logger = LogUtils.getLogger(DateUtils.class);
  15. /**
  16. * 前端效期格式
  17. */
  18. public static String yyyyMMddEXPIRYDATE = "yyyyMMdd";
  19. public static String MMMdd_comma_yyyyhhmmaa = "MMM dd,yyyy hh:mm aa";
  20. public static String MMMdd_comma_yyyyHHmmaa = "MMM dd,yyyy HH:mm aa";
  21. public static String MMMdd_comma_yyyy_comma_hhmmaa = "MMM dd,yyyy, hh:mm aa";
  22. public static String MMMdd_comma_yyyy_comma_HHmmaa = "MMM dd,yyyy, HH:mm aa";
  23. public final static String YYYYMMDD_HH24MISS = "yyyy-MM-DD HH24:MI:SS";
  24. public final static String D1970 = "1970-01-01 00:00:00";
  25. public final static Date DATE1970 = parse(D1970);
  26. /**
  27. * 日期格式,精确到年份
  28. */
  29. public static final String DF_YYYY = "yyyy";
  30. /**
  31. * 日期格式,精确到月份
  32. */
  33. public static final String YYYY_MM = "yyyy-MM";
  34. /**
  35. * 日期格式,精确到天数
  36. */
  37. public static final String YYYY_MM_DD = "yyyy-MM-dd";
  38. /**
  39. * 日期格式,精确到小时
  40. */
  41. public static final String YYYY_MM_DD_HH = "yyyy-MM-dd HH";
  42. /**
  43. * 日期格式,精确到分钟
  44. */
  45. public static final String YYYY_MM_DD_HH_MM = "yyyy-MM-dd HH:mm";
  46. /**
  47. * 日期格式,精确到秒
  48. */
  49. public static final String YYYY_MM_DD_HH_MM_SS = "yyyy-MM-dd HH:mm:ss";
  50. /**
  51. * 日期格式,精确到毫秒
  52. */
  53. public static final String YYYY_MM_DD_HH_MM_SS_S = "yyyy-MM-dd HH:mm:ss.S";
  54. /**
  55. * 日期格式,精确到毫秒
  56. */
  57. public static final String YYYY_MM_DD_HH_MM_SS_SS = "yyyy-MM-dd HH:mm:ss.SS";
  58. /**
  59. * 日期格式,精确到毫秒
  60. */
  61. public static final String YYYY_MM_DD_HH_MM_SS_SSS = "yyyy-MM-dd HH:mm:ss.SSS";
  62. /**
  63. * 无‘-’分隔符日期格式,精确到天数
  64. */
  65. public static final String YYYYMMDD = "yyyyMMdd";
  66. /**
  67. * 无‘-’分隔符日期格式,精确到分钟
  68. */
  69. public static final String YYYYMMDDHHMM = "yyyyMMddHHmm";
  70. /**
  71. * 无‘-’分隔符日期格式,精确到秒
  72. */
  73. public static final String YYYYMMDDHHMMSS = "yyyyMMddHHmmss";
  74. /**
  75. * 无‘-’分隔符日期格式,精确到毫秒
  76. */
  77. public static final String YYYYMMDDHHMMSSSSS = "yyyyMMddHHmmssSSS";
  78. /**
  79. * @Description 私有构造方法
  80. * @Para[][]
  81. * @Author weibin
  82. * @D2018/12/17211:531:44
  83. * @Return
  84. **/
  85. private DateUtils() {
  86. }
  87. /**
  88. * 字符串的日期类型 转换称 Date 类型
  89. *
  90. * @param timeContent 字符串的日期类型
  91. * @param formatStyle 日期格式
  92. * @return
  93. */
  94. public static Date stringConvertDate(String timeContent, String formatStyle) {
  95. if (StringUtils.isEmpty(timeContent)) {
  96. return null;
  97. }
  98. SimpleDateFormat format = new SimpleDateFormat(formatStyle);
  99. try {
  100. return format.parse(timeContent);
  101. } catch (Exception e) {
  102. e.printStackTrace();
  103. }
  104. return null;
  105. }
  106. /**
  107. * 检查日期格式
  108. *
  109. * @param time
  110. * @param format
  111. * @return
  112. */
  113. public static boolean checkDate(String time, String format) {
  114. if (stringConvertDate(time, format) == null) {
  115. return false;
  116. }
  117. return true;
  118. }
  119. /**
  120. * Date 转化成 String 类型的字符串日期格式
  121. *
  122. * @param date
  123. * @param formatStyle 转化成 什么格式
  124. * @return
  125. */
  126. public static String dateConvertString(Date date, String formatStyle) {
  127. if (date == null) {
  128. return null;
  129. }
  130. SimpleDateFormat format = new SimpleDateFormat(formatStyle);
  131. return format.format(date);
  132. }
  133. public static String dateConvertStringForExpiryDate(Date date) {
  134. SimpleDateFormat format = new SimpleDateFormat(YYYY_MM_DD);
  135. if (date == null) {
  136. return format.format(new Date());
  137. }
  138. return format.format(date);
  139. }
  140. /**
  141. * 字符串日期格式 转换成 带 地区标识的 Date 类型
  142. *
  143. * @param strDate
  144. * @param locale
  145. * @param formatStyle
  146. * @return
  147. */
  148. public static Date stringConvertLocalDate(String strDate, Locale locale, String formatStyle) {
  149. SimpleDateFormat srcsdf = new SimpleDateFormat(formatStyle, locale);
  150. try {
  151. return srcsdf.parse(strDate);
  152. } catch (ParseException e) {
  153. e.printStackTrace();
  154. }
  155. return null;
  156. }
  157. /**
  158. * 获取本地时间相对的UTC | GMT时间
  159. *
  160. * @return
  161. */
  162. public static Date getUtcTime() {
  163. // 1、取得本地时间:
  164. Calendar calendar = java.util.Calendar.getInstance();
  165. // 2、取得时间偏移量:
  166. final int zoneOffset = calendar.get(java.util.Calendar.ZONE_OFFSET);
  167. // 3、取得夏令时差:
  168. final int dstOffset = calendar.get(java.util.Calendar.DST_OFFSET);
  169. // 4、从本地时间里扣除这些差量,即可以取得UTC时间:
  170. calendar.add(java.util.Calendar.MILLISECOND, -(zoneOffset + dstOffset));
  171. return calendar.getTime();
  172. }
  173. /**
  174. * 获取本地时间相对的UTC | GMT时间
  175. *
  176. * @return
  177. */
  178. public static int getOffset() {
  179. // 1、取得本地时间:
  180. Calendar calendar = java.util.Calendar.getInstance();
  181. // 2、取得时间偏移量:
  182. int zoneOffset = calendar.get(java.util.Calendar.ZONE_OFFSET);
  183. return zoneOffset;
  184. }
  185. /**
  186. * 获取2个时间相差多少秒
  187. *
  188. * @param date1
  189. * @param date2
  190. * @return
  191. */
  192. public static Long getDiffSeconds(Date date1, Date date2) {
  193. long milliseconds1 = date1.getTime();
  194. long milliseconds2 = date2.getTime();
  195. long diff = milliseconds1 - milliseconds2;
  196. if (diff < 0) {
  197. diff = -diff;
  198. }
  199. long diffSeconds = diff / (1000);
  200. return diffSeconds;
  201. }
  202. /**
  203. * 获取2个时间相差多少分钟
  204. *
  205. * @param date1
  206. * @param date2
  207. * @return
  208. */
  209. public static Long getDiffMinutes(Date date1, Date date2) {
  210. Long diffMinutes = getDiffSeconds(date1, date2) / 60;
  211. return diffMinutes;
  212. }
  213. /**
  214. * 获取2个时间直接 相差多少小时
  215. *
  216. * @param date1
  217. * @param date2
  218. * @return
  219. */
  220. public static Long getDiffHours(Date date1, Date date2) {
  221. Long diffHours = getDiffMinutes(date1, date2) / 60;
  222. return diffHours;
  223. }
  224. /**
  225. * 获取2个时间直接 相差多少天
  226. *
  227. * @param date1
  228. * @param date2
  229. * @return
  230. */
  231. public static Long getDiffDays(Date date1, Date date2) {
  232. Long diffDays = getDiffHours(date1, date2) / 24;
  233. return diffDays;
  234. }
  235. /**
  236. * 获取相差月数
  237. *
  238. * @param date1
  239. * @param date2
  240. * @return
  241. */
  242. public static int getDiffMonths(Date date1, Date date2) {
  243. Calendar c1 = Calendar.getInstance();
  244. Calendar c2 = Calendar.getInstance();
  245. c1.setTime(date1);
  246. c2.setTime(date2);
  247. int year1 = c1.get(Calendar.YEAR);
  248. int year2 = c2.get(Calendar.YEAR);
  249. int month1 = c1.get(Calendar.MONTH);
  250. int month2 = c2.get(Calendar.MONTH);
  251. int day1 = c1.get(Calendar.DAY_OF_MONTH);
  252. int day2 = c2.get(Calendar.DAY_OF_MONTH);
  253. // 获取年的差值 
  254. int yearInterval = year1 - year2;
  255. // 如果 d1的 月-日 小于 d2的 月-日 那么 yearInterval-- 这样就得到了相差的年数
  256. if (month1 < month2 || month1 == month2 && day1 < day2) {
  257. yearInterval--;
  258. }
  259. // 获取月数差值
  260. int monthInterval = (month1 + 12) - month2;
  261. if (day1 < day2) {
  262. monthInterval--;
  263. }
  264. monthInterval %= 12;
  265. int monthsDiff = Math.abs(yearInterval * 12 + monthInterval);
  266. return monthsDiff;
  267. }
  268. /**
  269. * 获取相差年数
  270. *
  271. * @param date1
  272. * @param date2
  273. * @return
  274. */
  275. public static int getDiffYears(Date date1, Date date2) {
  276. Calendar c1 = Calendar.getInstance();
  277. Calendar c2 = Calendar.getInstance();
  278. c1.setTime(date1);
  279. c2.setTime(date2);
  280. int year1 = c1.get(Calendar.YEAR);
  281. int year2 = c2.get(Calendar.YEAR);
  282. return Math.abs(year1 - year2);
  283. }
  284. /**
  285. * 多少天以前,日期+ 00:00:00
  286. *
  287. * @param ago
  288. * @return
  289. */
  290. public static String getDaysAgoStart(int ago) {
  291. Calendar calendar = Calendar.getInstance();
  292. calendar.add(Calendar.DAY_OF_YEAR, -ago);
  293. String time = DateUtils.dateConvertString(calendar.getTime(), DateUtils.YYYY_MM_DD);
  294. String timeFrom = time + " 00:00:00";
  295. return timeFrom;
  296. }
  297. /**
  298. * 多少天以前,日期+ 23:59:59
  299. *
  300. * @param ago
  301. * @return
  302. */
  303. public static String getDaysAgoEnd(int ago) {
  304. Calendar calendar = Calendar.getInstance();
  305. calendar.add(Calendar.DAY_OF_YEAR, -ago);
  306. String time = DateUtils.dateConvertString(calendar.getTime(), DateUtils.YYYY_MM_DD);
  307. String timeFrom = time + " 23:59:59";
  308. return timeFrom;
  309. }
  310. /**
  311. * 判断time1 是否早于time2
  312. *
  313. * @param time1
  314. * @param time2
  315. * @return
  316. */
  317. public static boolean isBefore(String time1, String time2) {
  318. Date date1 = DateUtils.stringConvertDate(time1, DateUtils.YYYY_MM_DD_HH_MM_SS);
  319. Date date2 = DateUtils.stringConvertDate(time2, DateUtils.YYYY_MM_DD_HH_MM_SS);
  320. return date1.before(date2);
  321. }
  322. /**
  323. * 获得当前系统时间
  324. *
  325. * @return
  326. */
  327. public static String getSystemDate() {
  328. SimpleDateFormat sdf = new SimpleDateFormat(DateUtils.YYYY_MM_DD_HH_MM_SS);
  329. return sdf.format(new Date());
  330. }
  331. public static boolean isEqual(Date d1, Date d2) {
  332. if (d1 == null) {
  333. if (d2 == null) {
  334. return true;
  335. } else {
  336. return false;
  337. }
  338. }
  339. if (d2 == null) {
  340. if (d1 != null) {
  341. return false;
  342. }
  343. }
  344. return d1.equals(d2);
  345. }
  346. /**
  347. * @param dateTimeStr yyyy/MM/dd [HH:mm:ss[.SSS]] 或 yyyy-MM-dd [HH:mm:ss[.SSS]]
  348. * @return
  349. */
  350. public static Date parse(String dateTimeStr) {
  351. if (null == dateTimeStr || dateTimeStr.trim().length() == 0) {
  352. return null;
  353. }
  354. try {
  355. String str = dateTimeStr.replaceAll("/", "-").replace("T", " ").trim();
  356. switch (str.length()) {
  357. case 8:
  358. return stringConvertDate(str, "yyyyMMdd");
  359. case 10:
  360. return stringConvertDate(str, YYYY_MM_DD);
  361. case 16:
  362. return stringConvertDate(str, YYYY_MM_DD_HH_MM);
  363. case 19:
  364. return stringConvertDate(str, YYYY_MM_DD_HH_MM_SS);
  365. case 21:
  366. return stringConvertDate(str, YYYY_MM_DD_HH_MM_SS_S);
  367. case 22:
  368. return stringConvertDate(str, YYYY_MM_DD_HH_MM_SS_SS);
  369. case 23:
  370. return stringConvertDate(str, YYYY_MM_DD_HH_MM_SS_SSS);
  371. default:
  372. long timestamp = Long.parseLong(str);
  373. return new Date(timestamp);
  374. }
  375. } catch (Exception e) {
  376. e.printStackTrace();
  377. }
  378. return null;
  379. }
  380. /**
  381. * @Description 获取当前时间,返回毫秒值,高并发量会存在性能问题,后续待优化
  382. * @Param []
  383. * @Author weibin
  384. * @Date 2018/11/23 16:19
  385. * @Return long
  386. **/
  387. public static long getNowTime() {
  388. return System.currentTimeMillis();
  389. }
  390. /**
  391. * 获取日期类的实例
  392. * 如果传入参数为空,则取当前系统时间
  393. *
  394. * @param date 日期对象
  395. * @return
  396. */
  397. private static final Calendar getCalendarInstance(Date date) {
  398. Calendar cl = Calendar.getInstance();
  399. if (null != date) {
  400. cl.setTime(date);
  401. }
  402. return cl;
  403. }
  404. /**
  405. * 获得指定日期之后,指定天数的日期
  406. * 如果日期为空,则获取当前日期之后,指定天数的日期
  407. *
  408. * @return
  409. * @throws Exception
  410. */
  411. public static final Date getNextDate(Date nowDate, int days) {
  412. if (days <= 0) {
  413. throw new RuntimeException(StringUtils.concat("天数【", days, "】不可以小于等于0"));
  414. }
  415. Calendar cl = getCalendarInstance(nowDate);
  416. cl.set(Calendar.DAY_OF_MONTH, cl.get(Calendar.DAY_OF_MONTH) + days);
  417. return cl.getTime();
  418. }
  419. /**
  420. * 获得指定日期之前,指定天数的日期
  421. * 如果日期为空,则获取当前日期之前,指定天数的日期
  422. *
  423. * @return
  424. * @throws Exception
  425. */
  426. public static final Date getPrevDate(Date nowDate, int days) {
  427. if (days <= 0) {
  428. throw new RuntimeException(StringUtils.concat("天数【", days, "】不可以小于等于0"));
  429. }
  430. Calendar cl = getCalendarInstance(nowDate);
  431. cl.set(Calendar.DAY_OF_MONTH, cl.get(Calendar.DAY_OF_MONTH) - days);
  432. return cl.getTime();
  433. }
  434. /**
  435. * 将时间字符串转换为日期
  436. *
  437. * @param dateStr 时间字符串
  438. * @param format 日期格式化
  439. * @return 日期
  440. * @throws Exception
  441. */
  442. public static final Date strToDate(String dateStr, String format) {
  443. try {
  444. AssertUtils.allNotNullAndEmpty(dateStr, format);
  445. SimpleDateFormat sdf = new SimpleDateFormat(format, Locale.CHINA);
  446. return sdf.parse(dateStr);
  447. } catch (ParseException e) {
  448. e.printStackTrace();
  449. }
  450. return null;
  451. }
  452. /**
  453. * 按照参数format的格式,日期转字符串
  454. *
  455. * @param date 日期
  456. * @param format 日期格式化
  457. * @return 日期格式化后的字符串,例如:2018-07-12
  458. * @throws Exception
  459. */
  460. public static String dateToStr(Date date, String format) {
  461. AssertUtils.notNull(date);
  462. AssertUtils.notNullAndEmpty(format);
  463. SimpleDateFormat sdf = new SimpleDateFormat(format, Locale.CHINA);
  464. return sdf.format(date);
  465. }
  466. /**
  467. * 通过指定日期获取其年份,如果日期为空值则获取当前系统时间的年份
  468. *
  469. * @param date 日期
  470. * @return
  471. */
  472. public static final int getYear(Date date) {
  473. Calendar cal = getCalendarInstance(date);
  474. return cal.get(Calendar.YEAR);
  475. }
  476. /**
  477. * 获取指定日期的月份,如果日期为空值则获取当前系统时间的月份
  478. *
  479. * @param date 日期
  480. * @return
  481. */
  482. public static final int getMonth(Date date) {
  483. Calendar cal = getCalendarInstance(date);
  484. return cal.get(Calendar.MONTH) + 1;
  485. }
  486. /**
  487. * 获取指定日期所在月份的具体的天数,如果日期为空值则获取当前系统时间月份当天的天数
  488. *
  489. * @param date 日期
  490. * @return 日期所在月份具体的某一天
  491. */
  492. public static final int getDay(Date date) {
  493. Calendar cal = getCalendarInstance(date);
  494. return cal.get(Calendar.DAY_OF_MONTH);
  495. }
  496. /**
  497. * 获取指定日期所在月份的总天数,如果日期为空则取当前系统时间所在月份的总天数
  498. *
  499. * @param date 日期
  500. * @return 日期对应月份的总天数
  501. */
  502. public static final int getDaysOfMonth(Date date) {
  503. Calendar cal = getCalendarInstance(date);
  504. return cal.getActualMaximum(Calendar.DAY_OF_MONTH);
  505. }
  506. /**
  507. * 获取指定日期的小时数,如果日期为空值则获取当前系统时间的小时数
  508. *
  509. * @param date
  510. * @return
  511. */
  512. public static final int getHour(Date date) {
  513. Calendar cal = getCalendarInstance(date);
  514. return cal.get(Calendar.HOUR_OF_DAY);
  515. }
  516. /**
  517. * 获取指定日期所在分钟数,如果日期为空值则获取当前系统时间的分钟数
  518. *
  519. * @param date
  520. * @return
  521. */
  522. public static final int getMinute(Date date) {
  523. Calendar cal = getCalendarInstance(date);
  524. return cal.get(Calendar.MINUTE);
  525. }
  526. /**
  527. * 获取指定日期所在月份的第一天的日期
  528. *
  529. * @param date 日期
  530. * @return 当月的第一天的日期
  531. */
  532. public static final Date getFirstDayOfMonth(Date date) {
  533. Calendar cal = getCalendarInstance(date);
  534. cal.set(Calendar.DAY_OF_MONTH, 1);
  535. return cal.getTime();
  536. }
  537. /**
  538. * 获取指定日期所在月份的最后一天
  539. *
  540. * @param date 日期
  541. * @return 当月最后一天的日期
  542. */
  543. public static final Date getLastDayOfMonthDate(Date date) {
  544. Calendar cal = getCalendarInstance(date);
  545. cal.set(Calendar.MONTH, cal.get(Calendar.MONTH) + 1);
  546. cal.set(Calendar.DAY_OF_MONTH, 1);
  547. cal.add(Calendar.DAY_OF_MONTH, -1);
  548. return cal.getTime();
  549. }
  550. /**
  551. * 获取指定日期,下个月的第一天,时间为空则取当前系统时间
  552. *
  553. * @param date 日期
  554. * @return 下个月第一天的日期
  555. */
  556. public static final Date getFirstDayOfNextMonth(Date date) {
  557. Calendar cal = getCalendarInstance(date);
  558. cal.set(Calendar.MONTH, cal.get(Calendar.MONTH) + 1);
  559. cal.set(Calendar.DAY_OF_MONTH, 1);
  560. return cal.getTime();
  561. }
  562. /**
  563. * 获取指定日期,上个月的第一天的日期,时间为空则取当前系统时间
  564. *
  565. * @param date 日期
  566. * @return 上个月第一天的日期
  567. */
  568. public static final Date getFirstDayOfPrevMonth(Date date) {
  569. Calendar cal = getCalendarInstance(date);
  570. cal.set(Calendar.MONTH, cal.get(Calendar.MONTH) - 1);
  571. cal.set(Calendar.DAY_OF_MONTH, 1);
  572. return cal.getTime();
  573. }
  574. /**
  575. * 获取指定日期,本月的最后一天,如果日期为空,则取系统时间对应的月份最后一天
  576. *
  577. * @param date 日期
  578. * @return 当月最后一天的日期
  579. */
  580. public static final int getLastDayOfMonth(Date date) {
  581. Calendar cal = getCalendarInstance(date);
  582. cal.set(Calendar.MONTH, cal.get(Calendar.MONTH) + 1);
  583. cal.set(Calendar.DAY_OF_MONTH, 1);
  584. cal.add(Calendar.DAY_OF_MONTH, -1);
  585. return cal.get(Calendar.DAY_OF_MONTH);
  586. }
  587. /**
  588. * 通过生日获取年龄
  589. *
  590. * @param birthday
  591. * @return
  592. */
  593. public static final int getAge(Date birthday) {
  594. Calendar nowTime = getCalendarInstance(null);
  595. Calendar birthdayTime = getCalendarInstance(birthday);
  596. return nowTime.get(Calendar.YEAR) - birthdayTime.get(Calendar.YEAR);
  597. }
  598. /**
  599. * 是否小于或等于90天
  600. *
  601. * @return
  602. */
  603. public static final boolean overNinety(Date startDate, Date endDate) {
  604. long date = (endDate.getTime() - startDate.getTime()) / (1000 * 3600 * 24);
  605. if (date > 90) {
  606. return true;
  607. }
  608. return false;
  609. }
  610. /**
  611. * 通过传入秒值获取对应的日期
  612. *
  613. * @param seconds
  614. * @return
  615. */
  616. public static final Date getDate(Long seconds) {
  617. if (null == seconds || seconds == 0) {
  618. return null;
  619. } else {
  620. return Date.from(Instant.ofEpochSecond(seconds));
  621. }
  622. }
  623. /**
  624. * @Description 获取当前日期所在周,周一的日期
  625. * @Param [tranferTime]
  626. * @Author weibin
  627. * @Date 2019/3/8 17:49
  628. * @Return java.util.Date
  629. **/
  630. public static Date getFirstDayOfWeek(Date date) {
  631. Calendar cal = getCalendarInstance(date);
  632. cal.setFirstDayOfWeek(Calendar.MONDAY);
  633. int dayWeek = cal.get(Calendar.DAY_OF_WEEK);
  634. if (dayWeek == 1) {
  635. dayWeek = 8;
  636. }
  637. cal.set(Calendar.DATE, cal.get(Calendar.DATE) - dayWeek + 2);
  638. return cal.getTime();
  639. }
  640. /**
  641. * @Description 获取指定月数的日期
  642. * @Param [date, num]
  643. * @Author weibin
  644. * @Date 2019/3/8 18:29
  645. * @Return java.util.Date
  646. **/
  647. public static Date getMonth(Date date, int num) {
  648. Calendar cal = getCalendarInstance(date);
  649. cal.set(Calendar.MONTH, cal.get(Calendar.MONTH) + num);
  650. return cal.getTime();
  651. }
  652. /**
  653. * @Description 获取指定年的周数
  654. * @Param [year]
  655. * @Author weibin
  656. * @Date 2019/3/8 19:45
  657. * @Return int
  658. **/
  659. public static int getWeeks(int year) {
  660. Calendar cal = getCalendarInstance(null);
  661. cal.setFirstDayOfWeek(Calendar.MONDAY);
  662. cal.setMinimalDaysInFirstWeek(7);
  663. cal.set(year, Calendar.DECEMBER, 31, 23, 59, 59);
  664. return cal.get(Calendar.WEEK_OF_YEAR);
  665. }
  666. /**
  667. * 将时间字符串转换为yyyyMMddHH特定字段串
  668. *
  669. * @param dateStr 时间字符串
  670. * @param format 日期格式化
  671. * @return 日期
  672. * @throws Exception
  673. */
  674. public static final String strToStr(String dateStr, String format) throws Exception {
  675. AssertUtils.allNotNullAndEmpty(dateStr, format);
  676. SimpleDateFormat sdf = new SimpleDateFormat(format, Locale.CHINA);
  677. Date date = sdf.parse(dateStr);
  678. return dateToStr(date, "yyyyMMddHH");
  679. }
  680. /**
  681. * 将intFormat时间字符串转换为outFormat特定字段串
  682. *
  683. * @param dateStr 时间字符串
  684. * @param intFormat 输入日期格式化
  685. * @param outFormat 输出日期格式化
  686. * @return 日期
  687. * @throws Exception
  688. */
  689. public static final String strToStrInOut(String dateStr, String intFormat, String outFormat) {
  690. AssertUtils.allNotNullAndEmpty(dateStr, intFormat, outFormat);
  691. SimpleDateFormat sdf = new SimpleDateFormat(intFormat, Locale.CHINA);
  692. try {
  693. Date date = sdf.parse(dateStr);
  694. return dateToStr(date, outFormat);
  695. } catch (Exception e) {
  696. logger.error(e.toString());
  697. }
  698. return null;
  699. }
  700. /**
  701. * 功能:判断字符串是否为日期格式
  702. *
  703. * @param strDate
  704. * @return
  705. */
  706. public static Date parseDate(String strDate) {
  707. Date d = null;
  708. if (StringUtils.isBlank(strDate)) {
  709. return d;
  710. }
  711. List<String> parsePatterns = new ArrayList<>();
  712. parsePatterns.add(YYYYMMDD);
  713. parsePatterns.add(YYYY_MM);
  714. parsePatterns.add(YYYY_MM_DD);
  715. parsePatterns.add(YYYY_MM_DD_HH_MM);
  716. parsePatterns.add(YYYY_MM_DD_HH_MM_SS);
  717. try {
  718. d = DateUtils.parseDate(strDate, parsePatterns.toArray(new String[parsePatterns.size()]));
  719. } catch (ParseException e) {
  720. d = null;
  721. }
  722. return d;
  723. }
  724. /**
  725. * 获取当前时间星期几
  726. *
  727. * @return int
  728. * @author YY
  729. * @date 2019-05-08 16:52
  730. */
  731. public static int getWeekOfDate() {
  732. return getWeekOfDate(new Date());
  733. }
  734. /**
  735. * 获取当前时间是星期几
  736. *
  737. * @param date
  738. * @return int
  739. * @author YY
  740. * @date 2019-05-08 16:52
  741. */
  742. public static int getWeekOfDate(Date date) {
  743. Calendar cal = Calendar.getInstance();
  744. cal.setTime(date);
  745. return cal.get(Calendar.DAY_OF_WEEK) - 1;
  746. }
  747. /**
  748. * 判断是否是“1970-01-01”
  749. *
  750. * @param date
  751. * @return
  752. */
  753. public static boolean isMinDate(Date date) {
  754. return "1970-01-01".equals(dateToStr(date, DateUtils.YYYY_MM_DD));
  755. }
  756. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Monodyee/article/detail/372277
推荐阅读
相关标签
  

闽ICP备14008679号