版权声明:本文为博主原创文章,未经博主允许不得转载。

[java] view plain copy
  1. import java.util.Calendar;
  2. import java.text.DateFormat;
  3. import java.text.ParsePosition;
  4. import java.text.SimpleDateFormat;
  5. import java.util.Calendar;
  6. import java.util.Date;
  7. import java.util.GregorianCalendar;
  8. /**
  9. * 常用日历操作辅助类
  10. *
  11. *
  12. */
  13. public class CalendarUtil {
  14. // 用来全局控制 上一周,本周,下一周的周数变化
  15. private int weeks = 0;
  16. private int MaxDate;// 一月最大天数
  17. private int MaxYear;// 一年最大天数
  18. private static Calendar calendar = Calendar.getInstance();//实例化日历
  19. /**测试
  20. * @param args
  21. */
  22. public static void main(String[] args) {
  23. CalendarUtil tt = new CalendarUtil();
  24. System.out.println("获取当天日期:" + tt.getNowTime("yyyy-MM-dd"));
  25. System.out.println("获取本周一日期:" + tt.getMondayOFWeek());
  26. System.out.println("获取本周日的日期~:" + tt.getCurrentWeekday());
  27. System.out.println("获取上周一日期:" + tt.getPreviousWeekday());
  28. System.out.println("获取上周日日期:" + tt.getPreviousWeekSunday());
  29. System.out.println("获取下周一日期:" + tt.getNextMonday());
  30. System.out.println("获取下周日日期:" + tt.getNextSunday());
  31. System.out.println("获得相应周的周六的日期:" + tt.getNowTime("yyyy-MM-dd"));
  32. System.out.println("获取本月第一天日期:" + tt.getFirstDayOfMonth());
  33. System.out.println("获取本月最后一天日期:" + tt.getDefaultDay());
  34. System.out.println("获取上月第一天日期:" + tt.getPreviousMonthFirst());
  35. System.out.println("获取上月最后一天的日期:" + tt.getPreviousMonthEnd());
  36. System.out.println("获取下月第一天日期:" + tt.getNextMonthFirst());
  37. System.out.println("获取下月最后一天日期:" + tt.getNextMonthEnd());
  38. System.out.println("获取本年的第一天日期:" + tt.getCurrentYearFirst());
  39. System.out.println("获取本年最后一天日期:" + tt.getCurrentYearEnd());
  40. System.out.println("获取去年的第一天日期:" + tt.getPreviousYearFirst());
  41. System.out.println("获取去年的最后一天日期:" + tt.getPreviousYearEnd());
  42. System.out.println("获取明年第一天日期:" + tt.getNextYearFirst());
  43. System.out.println("获取明年最后一天日期:" + tt.getNextYearEnd());
  44. System.out.println("获取本季度第一天:" + tt.getThisSeasonFirstTime(11));
  45. System.out.println("获取本季度最后一天:" + tt.getThisSeasonFinallyTime(11));
  46. System.out.println("获取两个日期之间间隔天数2008-12-1~2008-9.29:"
  47. + CalendarUtil.getTwoDay("2008-12-1", "2008-9-29"));
  48. System.out.println("---------------->");
  49. System.out.println("获取当前月的第几周:" + tt.getWeekOfMonth());
  50. System.out.println("获取当前年份:" + tt.getYear());
  51. System.out.println("获取当前月份:" + tt.getMonth());
  52. System.out.println("获取今天在本年的第几天:" + tt.getDayOfYear());
  53. System.out.println("获得今天在本月的第几天(获得当前日):" + tt.getDayOfMonth());
  54. System.out.println("获得今天在本周的第几天:" + tt.getDayOfWeek());
  55. System.out.println("获得半年后的日期:" + tt.convertDateToString(tt.getTimeYearNext()));
  56. }
  57. /**
  58. * 获得当前年份
  59. *
  60. * @return
  61. */
  62. public static int getYear() {
  63. return calendar.get(Calendar.YEAR);
  64. }
  65. /**
  66. * 获得当前月份
  67. *
  68. * @return
  69. */
  70. public static int getMonth() {
  71. return calendar.get(Calendar.MONTH) + 1;
  72. }
  73. /**
  74. * 获得今天在本年的第几天
  75. *
  76. * @return
  77. */
  78. public static int getDayOfYear() {
  79. return calendar.get(Calendar.DAY_OF_YEAR);
  80. }
  81. /**
  82. * 获得今天在本月的第几天(获得当前日)
  83. *
  84. * @return
  85. */
  86. public static int getDayOfMonth() {
  87. return calendar.get(Calendar.DAY_OF_MONTH);
  88. }
  89. /**
  90. * 获得今天在本周的第几天
  91. *
  92. * @return
  93. */
  94. public static int getDayOfWeek() {
  95. return calendar.get(Calendar.DAY_OF_WEEK);
  96. }
  97. /**
  98. * 获得今天是这个月的第几周
  99. *
  100. * @return
  101. */
  102. public static int getWeekOfMonth() {
  103. return calendar.get(Calendar.DAY_OF_WEEK_IN_MONTH);
  104. }
  105. /**
  106. * 获得半年后的日期
  107. *
  108. * @return
  109. */
  110. public static Date getTimeYearNext() {
  111. calendar.add(Calendar.DAY_OF_YEAR, 183);
  112. return calendar.getTime();
  113. }
  114. public static String convertDateToString(Date dateTime){
  115. SimpleDateFormat df=new SimpleDateFormat("yyyy-MM-dd");
  116. return df.format(dateTime);
  117. }
  118. /**
  119. * 得到二个日期间的间隔天数
  120. */
  121. public static String getTwoDay(String sj1, String sj2) {
  122. SimpleDateFormat myFormatter = new SimpleDateFormat("yyyy-MM-dd");
  123. long day = 0;
  124. try {
  125. java.util.Date date = myFormatter.parse(sj1);
  126. java.util.Date mydate = myFormatter.parse(sj2);
  127. day = (date.getTime() - mydate.getTime()) / (24 * 60 * 60 * 1000);
  128. } catch (Exception e) {
  129. return "";
  130. }
  131. return day + "";
  132. }
  133. /**
  134. * 根据一个日期,返回是星期几的字符串
  135. *
  136. * @param sdate
  137. * @return
  138. */
  139. public static String getWeek(String sdate) {
  140. // 再转换为时间
  141. Date date = CalendarUtil.strToDate(sdate);
  142. Calendar c = Calendar.getInstance();
  143. c.setTime(date);
  144. // int hour=c.get(Calendar.DAY_OF_WEEK);
  145. // hour中存的就是星期几了,其范围 1~7
  146. // 1=星期日 7=星期六,其他类推
  147. return new SimpleDateFormat("EEEE").format(c.getTime());
  148. }
  149. /**
  150. * 将短时间格式字符串转换为时间 yyyy-MM-dd
  151. *
  152. * @param strDate
  153. * @return
  154. */
  155. public static Date strToDate(String strDate) {
  156. SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
  157. ParsePosition pos = new ParsePosition(0);
  158. Date strtodate = formatter.parse(strDate, pos);
  159. return strtodate;
  160. }
  161. /**
  162. * 两个时间之间的天数
  163. *
  164. * @param date1
  165. * @param date2
  166. * @return
  167. */
  168. public static long getDays(String date1, String date2) {
  169. if (date1 == null || date1.equals(""))
  170. return 0;
  171. if (date2 == null || date2.equals(""))
  172. return 0;
  173. // 转换为标准时间
  174. SimpleDateFormat myFormatter = new SimpleDateFormat("yyyy-MM-dd");
  175. java.util.Date date = null;
  176. java.util.Date mydate = null;
  177. try {
  178. date = myFormatter.parse(date1);
  179. mydate = myFormatter.parse(date2);
  180. } catch (Exception e) {
  181. }
  182. long day = (date.getTime() - mydate.getTime()) / (24 * 60 * 60 * 1000);
  183. return day;
  184. }
  185. // 计算当月最后一天,返回字符串
  186. public String getDefaultDay() {
  187. String str = "";
  188. SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
  189. Calendar lastDate = Calendar.getInstance();
  190. lastDate.set(Calendar.DATE, 1);// 设为当前月的1号
  191. lastDate.add(Calendar.MONTH, 1);// 加一个月,变为下月的1号
  192. lastDate.add(Calendar.DATE, -1);// 减去一天,变为当月最后一天
  193. str = sdf.format(lastDate.getTime());
  194. return str;
  195. }
  196. // 上月第一天
  197. public String getPreviousMonthFirst() {
  198. String str = "";
  199. SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
  200. Calendar lastDate = Calendar.getInstance();
  201. lastDate.set(Calendar.DATE, 1);// 设为当前月的1号
  202. lastDate.add(Calendar.MONTH, -1);// 减一个月,变为下月的1号
  203. // lastDate.add(Calendar.DATE,-1);//减去一天,变为当月最后一天
  204. str = sdf.format(lastDate.getTime());
  205. return str;
  206. }
  207. // 获取当月第一天
  208. public String getFirstDayOfMonth() {
  209. String str = "";
  210. SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
  211. Calendar lastDate = Calendar.getInstance();
  212. lastDate.set(Calendar.DATE, 1);// 设为当前月的1号
  213. str = sdf.format(lastDate.getTime());
  214. return str;
  215. }
  216. // 获得本周星期日的日期
  217. public String getCurrentWeekday() {
  218. weeks = 0;
  219. int mondayPlus = this.getMondayPlus();
  220. GregorianCalendar currentDate = new GregorianCalendar();
  221. currentDate.add(GregorianCalendar.DATE, mondayPlus + 6);
  222. Date monday = currentDate.getTime();
  223. DateFormat df = DateFormat.getDateInstance();
  224. String preMonday = df.format(monday);
  225. return preMonday;
  226. }
  227. // 获取当天时间
  228. public String getNowTime(String dateformat) {
  229. Date now = new Date();
  230. SimpleDateFormat dateFormat = new SimpleDateFormat(dateformat);// 可以方便地修改日期格式
  231. String hehe = dateFormat.format(now);
  232. return hehe;
  233. }
  234. // 获得当前日期与本周日相差的天数
  235. private int getMondayPlus() {
  236. Calendar cd = Calendar.getInstance();
  237. // 获得今天是一周的第几天,星期日是第一天,星期二是第二天......
  238. int dayOfWeek = cd.get(Calendar.DAY_OF_WEEK) - 1; // 因为按中国礼拜一作为第一天所以这里减1
  239. if (dayOfWeek == 1) {
  240. return 0;
  241. } else {
  242. return 1 - dayOfWeek;
  243. }
  244. }
  245. // 获得本周一的日期
  246. public String getMondayOFWeek() {
  247. weeks = 0;
  248. int mondayPlus = this.getMondayPlus();
  249. GregorianCalendar currentDate = new GregorianCalendar();
  250. currentDate.add(GregorianCalendar.DATE, mondayPlus);
  251. Date monday = currentDate.getTime();
  252. DateFormat df = DateFormat.getDateInstance();
  253. String preMonday = df.format(monday);
  254. return preMonday;
  255. }
  256. // 获得相应周的周六的日期
  257. public String getSaturday() {
  258. int mondayPlus = this.getMondayPlus();
  259. GregorianCalendar currentDate = new GregorianCalendar();
  260. currentDate.add(GregorianCalendar.DATE, mondayPlus + 7 * weeks + 6);
  261. Date monday = currentDate.getTime();
  262. DateFormat df = DateFormat.getDateInstance();
  263. String preMonday = df.format(monday);
  264. return preMonday;
  265. }
  266. // 获得上周星期日的日期
  267. public String getPreviousWeekSunday() {
  268. weeks = 0;
  269. weeks--;
  270. int mondayPlus = this.getMondayPlus();
  271. GregorianCalendar currentDate = new GregorianCalendar();
  272. currentDate.add(GregorianCalendar.DATE, mondayPlus + weeks);
  273. Date monday = currentDate.getTime();
  274. DateFormat df = DateFormat.getDateInstance();
  275. String preMonday = df.format(monday);
  276. return preMonday;
  277. }
  278. // 获得上周星期一的日期
  279. public String getPreviousWeekday() {
  280. weeks--;
  281. int mondayPlus = this.getMondayPlus();
  282. GregorianCalendar currentDate = new GregorianCalendar();
  283. currentDate.add(GregorianCalendar.DATE, mondayPlus + 7 * weeks);
  284. Date monday = currentDate.getTime();
  285. DateFormat df = DateFormat.getDateInstance();
  286. String preMonday = df.format(monday);
  287. return preMonday;
  288. }
  289. // 获得下周星期一的日期
  290. public String getNextMonday() {
  291. weeks++;
  292. int mondayPlus = this.getMondayPlus();
  293. GregorianCalendar currentDate = new GregorianCalendar();
  294. currentDate.add(GregorianCalendar.DATE, mondayPlus + 7);
  295. Date monday = currentDate.getTime();
  296. DateFormat df = DateFormat.getDateInstance();
  297. String preMonday = df.format(monday);
  298. return preMonday;
  299. }
  300. // 获得下周星期日的日期
  301. public String getNextSunday() {
  302. int mondayPlus = this.getMondayPlus();
  303. GregorianCalendar currentDate = new GregorianCalendar();
  304. currentDate.add(GregorianCalendar.DATE, mondayPlus + 7 + 6);
  305. Date monday = currentDate.getTime();
  306. DateFormat df = DateFormat.getDateInstance();
  307. String preMonday = df.format(monday);
  308. return preMonday;
  309. }
  310. private int getMonthPlus() {
  311. Calendar cd = Calendar.getInstance();
  312. int monthOfNumber = cd.get(Calendar.DAY_OF_MONTH);
  313. cd.set(Calendar.DATE, 1);// 把日期设置为当月第一天
  314. cd.roll(Calendar.DATE, -1);// 日期回滚一天,也就是最后一天
  315. MaxDate = cd.get(Calendar.DATE);
  316. if (monthOfNumber == 1) {
  317. return -MaxDate;
  318. } else {
  319. return 1 - monthOfNumber;
  320. }
  321. }
  322. // 获得上月最后一天的日期
  323. public String getPreviousMonthEnd() {
  324. String str = "";
  325. SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
  326. Calendar lastDate = Calendar.getInstance();
  327. lastDate.add(Calendar.MONTH, -1);// 减一个月
  328. lastDate.set(Calendar.DATE, 1);// 把日期设置为当月第一天
  329. lastDate.roll(Calendar.DATE, -1);// 日期回滚一天,也就是本月最后一天
  330. str = sdf.format(lastDate.getTime());
  331. return str;
  332. }
  333. // 获得下个月第一天的日期
  334. public String getNextMonthFirst() {
  335. String str = "";
  336. SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
  337. Calendar lastDate = Calendar.getInstance();
  338. lastDate.add(Calendar.MONTH, 1);// 减一个月
  339. lastDate.set(Calendar.DATE, 1);// 把日期设置为当月第一天
  340. str = sdf.format(lastDate.getTime());
  341. return str;
  342. }
  343. // 获得下个月最后一天的日期
  344. public String getNextMonthEnd() {
  345. String str = "";
  346. SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
  347. Calendar lastDate = Calendar.getInstance();
  348. lastDate.add(Calendar.MONTH, 1);// 加一个月
  349. lastDate.set(Calendar.DATE, 1);// 把日期设置为当月第一天
  350. lastDate.roll(Calendar.DATE, -1);// 日期回滚一天,也就是本月最后一天
  351. str = sdf.format(lastDate.getTime());
  352. return str;
  353. }
  354. // 获得明年最后一天的日期
  355. public String getNextYearEnd() {
  356. String str = "";
  357. SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
  358. Calendar lastDate = Calendar.getInstance();
  359. lastDate.add(Calendar.YEAR, 1);// 加一个年
  360. lastDate.set(Calendar.DAY_OF_YEAR, 1);
  361. lastDate.roll(Calendar.DAY_OF_YEAR, -1);
  362. str = sdf.format(lastDate.getTime());
  363. return str;
  364. }
  365. // 获得明年第一天的日期
  366. public String getNextYearFirst() {
  367. String str = "";
  368. SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
  369. Calendar lastDate = Calendar.getInstance();
  370. lastDate.add(Calendar.YEAR, 1);// 加一个年
  371. lastDate.set(Calendar.DAY_OF_YEAR, 1);
  372. str = sdf.format(lastDate.getTime());
  373. return str;
  374. }
  375. // 获得本年有多少天
  376. private int getMaxYear() {
  377. Calendar cd = Calendar.getInstance();
  378. cd.set(Calendar.DAY_OF_YEAR, 1);// 把日期设为当年第一天
  379. cd.roll(Calendar.DAY_OF_YEAR, -1);// 把日期回滚一天。
  380. int MaxYear = cd.get(Calendar.DAY_OF_YEAR);
  381. return MaxYear;
  382. }
  383. private int getYearPlus() {
  384. Calendar cd = Calendar.getInstance();
  385. int yearOfNumber = cd.get(Calendar.DAY_OF_YEAR);// 获得当天是一年中的第几天
  386. cd.set(Calendar.DAY_OF_YEAR, 1);// 把日期设为当年第一天
  387. cd.roll(Calendar.DAY_OF_YEAR, -1);// 把日期回滚一天。
  388. int MaxYear = cd.get(Calendar.DAY_OF_YEAR);
  389. if (yearOfNumber == 1) {
  390. return -MaxYear;
  391. } else {
  392. return 1 - yearOfNumber;
  393. }
  394. }
  395. // 获得本年第一天的日期
  396. public String getCurrentYearFirst() {
  397. int yearPlus = this.getYearPlus();
  398. GregorianCalendar currentDate = new GregorianCalendar();
  399. currentDate.add(GregorianCalendar.DATE, yearPlus);
  400. Date yearDay = currentDate.getTime();
  401. DateFormat df = DateFormat.getDateInstance();
  402. String preYearDay = df.format(yearDay);
  403. return preYearDay;
  404. }
  405. // 获得本年最后一天的日期 *
  406. public String getCurrentYearEnd() {
  407. Date date = new Date();
  408. SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy");// 可以方便地修改日期格式
  409. String years = dateFormat.format(date);
  410. return years + "-12-31";
  411. }
  412. // 获得上年第一天的日期 *
  413. public String getPreviousYearFirst() {
  414. Date date = new Date();
  415. SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy");// 可以方便地修改日期格式
  416. String years = dateFormat.format(date);
  417. int years_value = Integer.parseInt(years);
  418. years_value--;
  419. return years_value + "-1-1";
  420. }
  421. // 获得上年最后一天的日期
  422. public String getPreviousYearEnd() {
  423. weeks--;
  424. int yearPlus = this.getYearPlus();
  425. GregorianCalendar currentDate = new GregorianCalendar();
  426. currentDate.add(GregorianCalendar.DATE, yearPlus + MaxYear * weeks
  427. + (MaxYear - 1));
  428. Date yearDay = currentDate.getTime();
  429. DateFormat df = DateFormat.getDateInstance();
  430. String preYearDay = df.format(yearDay);
  431. return preYearDay;
  432. }
  433. // 获得本季度第一天
  434. public String getThisSeasonFirstTime(int month) {
  435. int array[][] = { { 1, 2, 3 }, { 4, 5, 6 }, { 7, 8, 9 }, { 10, 11, 12 } };
  436. int season = 1;
  437. if (month >= 1 && month <= 3) {
  438. season = 1;
  439. }
  440. if (month >= 4 && month <= 6) {
  441. season = 2;
  442. }
  443. if (month >= 7 && month <= 9) {
  444. season = 3;
  445. }
  446. if (month >= 10 && month <= 12) {
  447. season = 4;
  448. }
  449. int start_month = array[season - 1][0];
  450. int end_month = array[season - 1][2];
  451. Date date = new Date();
  452. SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy");// 可以方便地修改日期格式
  453. String years = dateFormat.format(date);
  454. int years_value = Integer.parseInt(years);
  455. int start_days = 1;// years+"-"+String.valueOf(start_month)+"-1";//getLastDayOfMonth(years_value,start_month);
  456. int end_days = getLastDayOfMonth(years_value, end_month);
  457. String seasonDate = years_value + "-" + start_month + "-" + start_days;
  458. return seasonDate;
  459. }
  460. // 获得本季度最后一天
  461. public String getThisSeasonFinallyTime(int month) {
  462. int array[][] = { { 1, 2, 3 }, { 4, 5, 6 }, { 7, 8, 9 }, { 10, 11, 12 } };
  463. int season = 1;
  464. if (month >= 1 && month <= 3) {
  465. season = 1;
  466. }
  467. if (month >= 4 && month <= 6) {
  468. season = 2;
  469. }
  470. if (month >= 7 && month <= 9) {
  471. season = 3;
  472. }
  473. if (month >= 10 && month <= 12) {
  474. season = 4;
  475. }
  476. int start_month = array[season - 1][0];
  477. int end_month = array[season - 1][2];
  478. Date date = new Date();
  479. SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy");// 可以方便地修改日期格式
  480. String years = dateFormat.format(date);
  481. int years_value = Integer.parseInt(years);
  482. int start_days = 1;// years+"-"+String.valueOf(start_month)+"-1";//getLastDayOfMonth(years_value,start_month);
  483. int end_days = getLastDayOfMonth(years_value, end_month);
  484. String seasonDate = years_value + "-" + end_month + "-" + end_days;
  485. return seasonDate;
  486. }
  487. /**
  488. * 获取某年某月的最后一天
  489. *
  490. * @param year
  491. *            年
  492. * @param month
  493. *            月
  494. * @return 最后一天
  495. */
  496. private int getLastDayOfMonth(int year, int month) {
  497. if (month == 1 || month == 3 || month == 5 || month == 7 || month == 8
  498. || month == 10 || month == 12) {
  499. return 31;
  500. }
  501. if (month == 4 || month == 6 || month == 9 || month == 11) {
  502. return 30;
  503. }
  504. if (month == 2) {
  505. if (isLeapYear(year)) {
  506. return 29;
  507. } else {
  508. return 28;
  509. }
  510. }
  511. return 0;
  512. }
  513. /***
  514. *
  515. *获取所在月的第一天日期
  516. * */
  517. public static String getFirstDayOfMonth(String date) {
  518. SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
  519. try {
  520. calendar.setTime(sdf.parse(date));
  521. calendar.set(Calendar.DATE, 1);
  522. } catch (ParseException e) {
  523. e.printStackTrace();
  524. }
  525. return sdf.format(calendar.getTime());
  526. }
  527. /***
  528. * 获取所在月的最后一天时间
  529. *
  530. * */
  531. public static String getLastDayOfMonth(String date) {
  532. SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
  533. try {
  534. calendar.setTime(sdf.parse(date));
  535. calendar.set(Calendar.DATE, 1);// 设为当前月的1号
  536. calendar.add(Calendar.MONTH, 1);// 加一个月,变为下月的1号
  537. calendar.add(Calendar.DATE, -1);// 减去一天,变为当月最后一天
  538. } catch (ParseException e) {
  539. e.printStackTrace();
  540. }
  541. return sdf.format(calendar.getTime());
  542. }
  543. /***
  544. *
  545. * 上月第一天
  546. *
  547. * */
  548. public static String getPreviousMonthFirst(String date) {
  549. SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
  550. try {
  551. calendar.setTime(sdf.parse(date));
  552. calendar.set(Calendar.DATE, 1);// 设为当前月的1号
  553. calendar.add(Calendar.MONTH, -1);// 减一个月,变为下月的1号
  554. } catch (ParseException e) {
  555. e.printStackTrace();
  556. }
  557. return sdf.format(calendar.getTime());
  558. }
  559. /***
  560. *
  561. * 上月最后一天
  562. *
  563. * */
  564. public static String getPreviousMonthEnd(String date) {
  565. SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
  566. try {
  567. calendar.setTime(sdf.parse(date));
  568. calendar.add(Calendar.MONTH, -1);// 减一个月
  569. calendar.set(Calendar.DATE, 1);// 把日期设置为当月第一天
  570. calendar.roll(Calendar.DATE, -1);// 日期回滚一天,也就是本月最后一天
  571. } catch (ParseException e) {
  572. e.printStackTrace();
  573. }
  574. return sdf.format(calendar.getTime());
  575. }
  576. /***
  577. * 获取所在年的第一天
  578. *
  579. * **/
  580. public static String getFirstDayOfYear(String date) {
  581. SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
  582. try {
  583. calendar.setTime(sdf.parse(date));
  584. calendar.set(Calendar.DAY_OF_YEAR, 1);
  585. } catch (ParseException e) {
  586. e.printStackTrace();
  587. }
  588. return sdf.format(calendar.getTime());
  589. }
  590. /**
  591. *
  592. * 当前时间去年的日期
  593. * */
  594. public static String getDayOfLastYear(String date) {
  595. SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
  596. try {
  597. calendar.setTime(sdf.parse(date));
  598. calendar.add(Calendar.YEAR, -1);
  599. } catch (ParseException e) {
  600. e.printStackTrace();
  601. }
  602. return sdf.format(calendar.getTime());
  603. }
  604. /****
  605. *
  606. * 系统当前时间
  607. * */
  608. public static String getCurrentDate (){
  609. SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
  610. return sdf.format(calendar.getTime());
  611. }
  612. /**
  613. * 得到几天前的时间
  614. * @param d
  615. * @param day
  616. * @return
  617. */
  618. public static Date getDateBefore(Date d,int day){
  619. Calendar now =Calendar.getInstance();
  620. now.setTime(d);
  621. now.set(Calendar.DATE,now.get(Calendar.DATE)-day);
  622. return now.getTime();
  623. }
  624. /**
  625. * 得到几天后的时间
  626. * @param d
  627. * @param day
  628. * @return
  629. */
  630. public static Date getDateAfter(Date d,int day){
  631. Calendar now =Calendar.getInstance();
  632. now.setTime(d);
  633. now.set(Calendar.DATE,now.get(Calendar.DATE)+day);
  634. return now.getTime();
  635. }
[java] view plain copy
  1. /****
  2. *
  3. *
  4. * 计算月份差
  5. *
  6. * **/
  7. public static int getMonthSpace(String firstTime ,String lastTime ){
  8. SimpleDateFormat sdf =new SimpleDateFormat("yyyy-MM-dd");
  9. Calendar c1 = Calendar.getInstance();
  10. Calendar c2 = Calendar.getInstance();
  11. try {
  12. c1.setTime(sdf.parse(lastTime));
  13. c2.setTime(sdf.parse(firstTime));
  14. } catch (ParseException e) {
  15. e.printStackTrace();
  16. }
  17. int result =(c1.get(Calendar.YEAR)-c2.get(Calendar.YEAR))*12+(c1.get(Calendar.MONTH)-c2.get(Calendar.MONTH));
  18. return result ==0 ? 1 : result;
  19. }

CalendarUtil 日期操作工具类的更多相关文章

  1. Java日期操作工具类

    /** * 格式化日期显示格式 * * @param sdate * 原始日期格式 s - 表示 "yyyy-mm-dd" 形式的日期的 String 对象 * @param fo ...

  2. [转载]C# FTP操作工具类

    本文转载自<C# Ftp操作工具类>,仅对原文格式进行了整理. 介绍了几种FTP操作的函数,供后期编程时查阅. 参考一: using System; using System.Collec ...

  3. JavaScript时间操作工具类

    /** * 时间操作工具类 * * @author zwq * */ var TimeFrameUtil = { /** * 格式化日期 * @param date {Date} 日期 * @para ...

  4. java/javascript 时间操作工具类

    一.java 时间操作工具类 import org.springframework.util.StringUtils; import java.text.ParseException; import ...

  5. Android随笔之——Android时间、日期相关类和方法

    今天要讲的是Android里关于时间.日期相关类和方法.在Android中,跟时间.日期有关的类主要有Time.Calendar.Date三个类.而与日期格式化输出有关的DateFormat和Simp ...

  6. Java 日期格式化工具类

    import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; impor ...

  7. Code片段 : .properties属性文件操作工具类 & JSON工具类

    摘要: 原创出处:www.bysocket.com 泥瓦匠BYSocket 希望转载,保留摘要,谢谢! “贵专” — 泥瓦匠 一.java.util.Properties API & 案例 j ...

  8. 日期操作类--SimpleDateFormat类

    使用SimpleDateFormat格式化日期 SimpleDateFormat是一个以语言环境敏感的方式来格式化和分析日期的类.SimpleDateFormat允许你选择任何用户自定义日期时间格式来 ...

  9. 日期操作类--Date类

    Date-API ava.util包提供了Date类来封装当前的日期和时间.Date类提供两个构造函数来实例化Date对象.第一个构造函数使用当前日期和时间来初始化对象. Date( ) 第二个构造函 ...

随机推荐

  1. bootstrap资料链接

    别人的博客,写的还不错 http://www.cnblogs.com/hnnydxgjj/category/879277.html

  2. Jpa调用存储过程及参数

    public List<Object> findAllEntityListBySearch(Long inputInfoId, int flag) throws Exception { L ...

  3. 使用caffe 的 python接口测试数据,选定GPU编号

    只需要在python脚本中添加两行代码: caffe.set_device(0) #使用第一块显卡 caffe.set_mode_gpu() #设为gpu模式 这样,就可以在默认显卡被占用(第一块显卡 ...

  4. vue 跨域:使用vue-cli 配置 proxyTable 实现跨域问题

    路径在/config/index.js 中,找到dev.proxyTable.如下配置示例: proxyTable: { '/api': { // 我要请求的地址 target: 'http://oa ...

  5. Atitit.虚拟机与指令系统的设计

    Atitit.虚拟机与指令系统的设计 1. 两种计算模型  ,堆栈机和状态机(基于寄存器的虚拟机1 1.1.1. 堆栈机1 1.1.2. 状态机2 2. 为什么状态机比堆栈机快呢?3 2.1. Sta ...

  6. OA项目之权限设计②

    1.接着昨天的今天到了设计怎样成功的实现权限分配的功能,首先我们看下这些功能的过程例如以下图: 首先是从user的list页面看到设置权限的button,点击进去进入设置权限的页面 进入设置权限页面, ...

  7. 转:关于安卓多线程while(true)方法占用CPU高的原因及其解决方法

    由于项目需要用到安卓多线程操作,结果开了四条线程,下载到平板一直很卡,CPU占用率暴涨.于是开始查找原因,发现是线程run()方法里的while(true)导致的, 下图是为解决时开启一条while( ...

  8. gulp安装使用

    1. 安装nodeJs   2. 全局安装gulp: npm install gulp -g   3. 在cmd切换至项目文件夹下 npm init,创建package.json文件(JSON文件内不 ...

  9. 为什么选择Handlebars.js

    据了解,对于java开发,涉及到页面展示时,比较主流的有两种解决方案: 1. struts2+vo+el表达式. 这种方式,重点不在于struts2,而是vo和el表达式,其基本思想是:根据页面需要的 ...

  10. Introdution to Spring Mobile

    1. In Eclipse, create a new Maven Project using the spring-mvc-jpa-archetype. 2. Add the spring-mobi ...