Calendar日期类常用使用方法

阳光穿透心脏的1/2处 2022-01-19 01:11 479阅读 0赞

原博链接:https://blog.csdn.net/weixin_43052839/article/details/82015021

Calendar获取今天、昨天、近三天、近一周、近一月、本周、上周、本月、上月、本季度、上季度、本年、上一年开始时间和结束时间

  1. /** * 获取今日开始时间和结束时间 * @param condition * @return */
  2. private void setDayRange(PageData condition){
  3. Calendar calendar = Calendar.getInstance();
  4. calendar.set(Calendar.MILLISECOND,0);
  5. calendar.set(Calendar.SECOND,0);
  6. calendar.set(Calendar.MINUTE,0);
  7. calendar.set(Calendar.HOUR_OF_DAY,0);
  8. condition.put("startTime",calendar.getTime());
  9. calendar.set(Calendar.HOUR_OF_DAY,24);
  10. condition.put("stopTime",calendar.getTime());
  11. }
  12. /** * 获取昨天开始时间和结束时间 * @param condition * @return */
  13. private void setYesterdayRange(PageData condition) {
  14. Calendar calendar = Calendar.getInstance();
  15. calendar.set(Calendar.MILLISECOND,0);
  16. calendar.set(Calendar.SECOND,0);
  17. calendar.set(Calendar.MINUTE,0);
  18. calendar.set(Calendar.HOUR_OF_DAY,0);
  19. condition.put("stopTime",calendar.getTime());
  20. calendar.set(Calendar.HOUR_OF_DAY,-24);
  21. condition.put("startTime",calendar.getTime());
  22. }
  23. /** * 获得最近三天的开始时间和结束时间 * @param condition * @return */
  24. private void setThreeRange(PageData condition) {
  25. Calendar calendar = Calendar.getInstance();
  26. calendar.set(Calendar.MILLISECOND,0);
  27. calendar.set(Calendar.SECOND,0);
  28. calendar.set(Calendar.MINUTE,0);
  29. calendar.set(Calendar.HOUR_OF_DAY,24);
  30. condition.put("stopTime",calendar.getTime());
  31. calendar.set(Calendar.HOUR_OF_DAY,-72);
  32. condition.put("startTime",calendar.getTime());
  33. }
  34. /** * 获得近一周的开始时间和结束时间 * @param condition * @return */
  35. private void setDaySevenRange(PageData condition){
  36. Calendar calendar = Calendar.getInstance();
  37. calendar.set(calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), calendar.get(Calendar.DAY_OF_MONTH), 0, 0, 0);
  38. calendar.set(Calendar.HOUR_OF_DAY,24);
  39. condition.put("stopTime",calendar.getTime());
  40. calendar.set(Calendar.HOUR_OF_DAY,-168);
  41. condition.put("startTime",calendar.getTime());
  42. }
  43. /** * 获得近一月的开始时间和结束时间 * @param condition * @return */
  44. private void setDayTRange(PageData condition){
  45. Calendar calendar = Calendar.getInstance();
  46. calendar.set(calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), calendar.get(Calendar.DAY_OF_MONTH), 0, 0, 0);
  47. calendar.set(Calendar.HOUR_OF_DAY,24);
  48. condition.put("stopTime",calendar.getTime());
  49. calendar.set(Calendar.HOUR_OF_DAY,-720);
  50. condition.put("startTime",calendar.getTime());
  51. }
  52. /** * 获取本周开始时间和结束时间 * @param condition * @return */
  53. private void setWeekRange(PageData condition){
  54. Calendar calendar = Calendar.getInstance();
  55. calendar.set(calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), calendar.get(Calendar.DAY_OF_MONTH), 0, 0, 0);
  56. calendar.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);
  57. condition.put("startTime",calendar.getTime());
  58. calendar.add(Calendar.DAY_OF_WEEK, 7);
  59. condition.put("stopTime",calendar.getTime());
  60. 或者
  61. int week = calendar.get(Calendar.DAY_OF_WEEK)-2;
  62. calendar.add(Calendar.DATE, -week);
  63. condition.put("startTime",dateToString(calendar.getTime()));
  64. calendar.add(Calendar.DATE, 7-week);
  65. condition.put("stopTime",dateToString(calendar.getTime()));
  66. }
  67. /** * 获取上周开始时间和结束时间 * @param condition * @return */
  68. private void setLastWeekRange(PageData condition){
  69. Calendar calendar = Calendar.getInstance();
  70. calendar.set(calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), calendar.get(Calendar.DAY_OF_MONTH), 0, 0, 0);
  71. calendar.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);
  72. condition.put("stopTime",calendar.getTime());
  73. calendar.add(Calendar.DAY_OF_WEEK, -7);
  74. condition.put("startTime",calendar.getTime());
  75. }
  76. /** * 获取本月开始时间和结束时间 * @param condition * @return */
  77. private void setMonthRange(PageData condition){
  78. Calendar calendar = Calendar.getInstance();
  79. calendar.set(calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), calendar.get(Calendar.DAY_OF_MONTH), 0, 0, 0);
  80. calendar.set(Calendar.DAY_OF_MONTH, calendar.getActualMinimum(Calendar.DAY_OF_MONTH));
  81. condition.put("startTime",calendar.getTime());
  82. calendar.add(Calendar.DAY_OF_WEEK, 7);
  83. calendar.set(Calendar.DAY_OF_MONTH, calendar.getActualMaximum(Calendar.DAY_OF_MONTH));
  84. calendar.set(Calendar.HOUR_OF_DAY, 24);
  85. condition.put("stopTime",calendar.getTime());
  86. }
  87. /** * 获取上月开始时间和结束时间 * @param condition * @return */
  88. private void setLastMonthRange(PageData condition){
  89. Calendar calendar = Calendar.getInstance();
  90. calendar.set(calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), calendar.get(Calendar.DAY_OF_MONTH), 0, 0, 0);
  91. calendar.add(Calendar.MONTH, -1);
  92. calendar.set(Calendar.DAY_OF_MONTH, calendar.getActualMinimum(Calendar.DAY_OF_MONTH));
  93. condition.put("startTime",calendar.getTime());
  94. calendar.add(Calendar.DAY_OF_WEEK, 7);
  95. calendar.set(Calendar.DAY_OF_MONTH, calendar.getActualMaximum(Calendar.DAY_OF_MONTH));
  96. calendar.set(Calendar.HOUR_OF_DAY, 24);
  97. condition.put("stopTime",calendar.getTime());
  98. }
  99. /** * 获取本季度开始时间和结束时间 * @param condition * @return */
  100. private void setQuarterRange(PageData condition){
  101. Calendar calendar = Calendar.getInstance();
  102. calendar.set(calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), calendar.get(Calendar.DAY_OF_MONTH), 0, 0, 0);
  103. int currentMonth = calendar.get(Calendar.MONTH) + 1;
  104. try {
  105. if (currentMonth >= 1 && currentMonth <= 3)
  106. calendar.set(Calendar.MONTH, 0);
  107. else if (currentMonth >= 4 && currentMonth <= 6)
  108. calendar.set(Calendar.MONTH, 3);
  109. else if (currentMonth >= 7 && currentMonth <= 9)
  110. calendar.set(Calendar.MONTH, 6);
  111. else if (currentMonth >= 10 && currentMonth <= 12)
  112. calendar.set(Calendar.MONTH, 9);
  113. calendar.set(Calendar.DATE, 1);
  114. } catch (Exception e) {
  115. e.printStackTrace();
  116. }
  117. condition.put("startTime",calendar.getTime());
  118. calendar.add(Calendar.MONTH, 3);
  119. condition.put("stopTime",calendar.getTime());
  120. }
  121. /** * 获取上季度开始时间和结束时间 * @param condition * @return */
  122. private void setLastQuarterRange(PageData condition){
  123. Calendar calendar = Calendar.getInstance();
  124. calendar.set(calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), calendar.get(Calendar.DAY_OF_MONTH), 0, 0, 0);
  125. int currentMonth = calendar.get(Calendar.MONTH) + 1;
  126. try {
  127. if (currentMonth >= 1 && currentMonth <= 3)
  128. calendar.set(Calendar.MONTH, 0);
  129. else if (currentMonth >= 4 && currentMonth <= 6)
  130. calendar.set(Calendar.MONTH, 3);
  131. else if (currentMonth >= 7 && currentMonth <= 9)
  132. calendar.set(Calendar.MONTH, 6);
  133. else if (currentMonth >= 10 && currentMonth <= 12)
  134. calendar.set(Calendar.MONTH, 9);
  135. calendar.set(Calendar.DATE, 1);
  136. } catch (Exception e) {
  137. e.printStackTrace();
  138. }
  139. calendar.add(Calendar.MONTH, -3);
  140. condition.put("startTime",calendar.getTime());
  141. calendar.add(Calendar.MONTH, 3);
  142. condition.put("stopTime",calendar.getTime());
  143. }
  144. /** * 获取本年开始时间和结束时间 * @param condition * @return */
  145. private void setYearRange(PageData condition){
  146. Calendar calendar = Calendar.getInstance();
  147. calendar.set(calendar.get(Calendar.YEAR), 0, calendar.get(Calendar.DAY_OF_MONTH), 0, 0, 0);
  148. calendar.set(Calendar.DAY_OF_MONTH, calendar.getActualMinimum(Calendar.DAY_OF_MONTH));
  149. condition.put("startTime",calendar.getTime());
  150. calendar.add(Calendar.YEAR, 1);
  151. condition.put("stopTime",calendar.getTime());
  152. }
  153. /** * 获取上一年开始时间和结束时间 * @param condition * @return */
  154. private void setLastYearRange(PageData condition){
  155. Calendar calendar = Calendar.getInstance();
  156. calendar.set(calendar.get(Calendar.YEAR), 0, calendar.get(Calendar.DAY_OF_MONTH), 0, 0, 0);
  157. calendar.set(Calendar.DAY_OF_MONTH, calendar.getActualMinimum(Calendar.DAY_OF_MONTH));
  158. calendar.add(Calendar.YEAR, -1);
  159. condition.put("startTime",calendar.getTime());
  160. calendar.add(Calendar.YEAR, 1);
  161. condition.put("stopTime",calendar.getTime());
  162. }
  163. /** * ("startTime" -> "Fri Jun 08 00:00:00 CST 2018")String的Date转为String类型的date */
  164. private String strToformatDate(String date){
  165. String str="";
  166. Date date1=new Date();
  167. try {
  168. DateFormat df = new SimpleDateFormat("EEE MMM dd HH:mm:ss zzz yyyy", Locale.US);
  169. date1 = df.parse(date);
  170. df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  171. str = df.format(date1);
  172. }catch (Exception e){
  173. e.printStackTrace();
  174. }
  175. return str;
  176. }
  177. /** * ("startTime" -> "Fri Jun 08 00:00:00 CST 2018")String的Date转为时间戳 */
  178. public long toformatDate(String date){
  179. String str="";
  180. Date date1=new Date();
  181. try {
  182. DateFormat df = new SimpleDateFormat("EEE MMM dd HH:mm:ss zzz yyyy", Locale.US);
  183. date1 = df.parse(date);
  184. System.err.println(date1.getTime()/1000);
  185. }catch (Exception e){
  186. e.printStackTrace();
  187. }
  188. return date1.getTime()/1000;
  189. }
  190. /** * 测试 */
  191. public static void main(String[] args) {
  192. PageData condition = new PageData();
  193. setLastQuarterRange(condition);
  194. String startTime=String.valueOf(strToformatDate(condition.get("startTime").toString()));
  195. String stopTime=String.valueOf(strToformatDate(condition.get("stopTime").toString()));
  196. System.out.println(startTime+"--->"+stopTime);
  197. }
  198. /** * 得到n天之后是周几 * @param days * @return */
  199. public static String getAfterDayWeek(String days) {
  200. int daysInt = Integer.parseInt(days);
  201. Calendar canlendar = Calendar.getInstance(); // java.util包
  202. canlendar.add(Calendar.DATE, daysInt); // 日期减 如果不够减会将月变动
  203. Date date = canlendar.getTime();
  204. SimpleDateFormat sdf = new SimpleDateFormat("E");
  205. String dateStr = sdf.format(date);
  206. return dateStr;
  207. }
  208. /** * 得到n天之后的当前时间 * @param days * @return */
  209. public static String getAfterDayDate(String days) {
  210. int daysInt = Integer.parseInt(days);
  211. Calendar canlendar = Calendar.getInstance(); // java.util包
  212. canlendar.add(Calendar.DATE, daysInt); // 日期减 如果不够减会将月变动
  213. Date date = canlendar.getTime();
  214. SimpleDateFormat sdfd = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  215. String dateStr = sdfd.format(date);
  216. return dateStr;
  217. }
  218. /** * 得到几分钟后的时间 * @param date minute(可为正负) * @return */
  219. public static Date getAfterTimeDate(Date date,int minute) {
  220. Calendar canlendar = Calendar.getInstance(); // java.util包
  221. canlendar.setTime(date);
  222. canlendar.add(Calendar.MINUTE, minute); // 日期减 如果不够减会将月变动
  223. return canlendar.getTime();
  224. }
  225. /** * 时间相减得到天数(开始时间和结束时间可任意大小) * @param beginDateStr(格式为"yyyy-MM-dd",也可为"yyyy-MM-dd hh:mm:ss") * @param endDateStr * @return long */
  226. public static long getDaySub(String beginDateStr,String endDateStr){
  227. long day=0;
  228. SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
  229. //SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
  230. Date beginDate = null;
  231. Date endDate = null;
  232. try {
  233. beginDate = format.parse(beginDateStr);
  234. endDate= format.parse(endDateStr);
  235. } catch (ParseException e) {
  236. e.printStackTrace();
  237. }
  238. day=(endDate.getTime()-beginDate.getTime())/(24*60*60*1000);
  239. //System.out.println("相隔的天数="+day);
  240. return day;
  241. }
  242. private String dateToString(Date date){
  243. DateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  244. return format.format(date);
  245. }

发表评论

表情:
评论列表 (有 0 条评论,479人围观)

还没有评论,来说两句吧...

相关阅读