Java 输入一个字符串格式日期,获取对应的自然月开始结束时间,对应的自然年开始结束时间

冷不防 2023-07-18 02:16 27阅读 0赞
  1. import java.text.ParseException;
  2. import java.text.SimpleDateFormat;
  3. import java.util.*;
  4. /**
  5. * @Author : JCccc
  6. * @CreateTime : 2020/3/27
  7. * @Description :
  8. **/
  9. public class DateTimeUtil {
  10. //输入一个时间,获取对应的自然月开始时间 和结束时间
  11. public static Map getMonthStartTimeByDate(String dateTime) throws ParseException {
  12. SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
  13. Date date = simpleDateFormat.parse(dateTime);
  14. long currentTime = date.getTime();
  15. String timeZone = "GMT+8:00";
  16. Calendar calendar = Calendar.getInstance();// 获取当前日期
  17. calendar.setTimeZone(TimeZone.getTimeZone(timeZone));
  18. calendar.setTimeInMillis(currentTime);
  19. calendar.add(Calendar.YEAR, 0);
  20. calendar.add(Calendar.MONTH, 0);
  21. calendar.set(Calendar.DAY_OF_MONTH, 1);// 设置为1号,当前日期既为本月第一天
  22. calendar.set(Calendar.HOUR_OF_DAY, 0);
  23. calendar.set(Calendar.MINUTE, 0);
  24. calendar.set(Calendar.SECOND, 0);
  25. calendar.set(Calendar.MILLISECOND, 0);
  26. long timeInMillis = calendar.getTimeInMillis();
  27. Date resultStartDate = new Date(timeInMillis);
  28. String resultStartTime = simpleDateFormat.format(resultStartDate);
  29. Calendar calendar2 = Calendar.getInstance();// 获取当前日期
  30. calendar2.setTimeZone(TimeZone.getTimeZone(timeZone));
  31. calendar2.setTimeInMillis(currentTime);
  32. calendar2.add(Calendar.YEAR, 0);
  33. calendar2.add(Calendar.MONTH, 0);
  34. calendar2.set(Calendar.DAY_OF_MONTH, calendar.getActualMaximum(Calendar.DAY_OF_MONTH));// 获取当前月最后一天
  35. calendar2.set(Calendar.HOUR_OF_DAY, 23);
  36. calendar2.set(Calendar.MINUTE, 59);
  37. calendar2.set(Calendar.SECOND, 59);
  38. calendar2.set(Calendar.MILLISECOND, 999);
  39. long timeInMillis2 = calendar2.getTimeInMillis();
  40. Date resultEndDate = new Date(timeInMillis2);
  41. String resultEndTime = simpleDateFormat.format(resultEndDate);
  42. Map map = new HashMap();
  43. map.put("startDate", resultStartTime);
  44. map.put("endDate", resultEndTime);
  45. return map;
  46. }
  47. //输入一个时间,获取对应的自然年开始时间,结束时间
  48. public static Map getYearStartTimeByDate(String dateTime) throws ParseException {
  49. SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
  50. Date date = simpleDateFormat.parse(dateTime);
  51. GregorianCalendar gc = (GregorianCalendar) Calendar.getInstance();
  52. gc.setTime(date);
  53. Calendar cal = Calendar.getInstance();
  54. cal.set(Calendar.YEAR, Integer.valueOf(gc.get(1)));
  55. cal.set(Calendar.MONTH, Calendar.JANUARY);
  56. cal.set(Calendar.DATE, 1);
  57. Long dayStartTime = getDayStartTime(cal.getTime());
  58. Date resultStartDate = new Date(dayStartTime);
  59. String resultStartTime = simpleDateFormat.format(resultStartDate);
  60. Calendar cal2 = Calendar.getInstance();
  61. cal2.set(Calendar.YEAR, Integer.valueOf(gc.get(1)));
  62. cal2.set(Calendar.MONTH, Calendar.DECEMBER);
  63. cal2.set(Calendar.DATE, 31);
  64. Long dayEndTime = getDayStartTime(cal2.getTime());
  65. Date resultEndDate = new Date(dayEndTime);
  66. String resultEndTime = simpleDateFormat.format(resultEndDate);
  67. Map map = new HashMap();
  68. map.put("startDate", resultStartTime);
  69. map.put("endDate", resultEndTime);
  70. return map;
  71. }
  72. public static Long getDayStartTime(Date d) {
  73. Calendar calendar = Calendar.getInstance();
  74. if (null != d) calendar.setTime(d);
  75. calendar.set(calendar.get(Calendar.YEAR),
  76. calendar.get(Calendar.MONTH),
  77. calendar.get(Calendar.DAY_OF_MONTH), 0, 0, 0);
  78. calendar.set(Calendar.MILLISECOND, 0);
  79. return calendar.getTimeInMillis();
  80. }
  81. public static void main(String[] args) throws Exception {
  82. Map monthStartTimeByDate = getMonthStartTimeByDate("2020-03-24");
  83. System.out.println(monthStartTimeByDate.toString());
  84. Map yearStartTimeByDate = getYearStartTimeByDate("2020-03-24");
  85. System.out.println(yearStartTimeByDate.toString());
  86. }
  87. }

测试效果:

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM1Mzg3OTQw_size_16_color_FFFFFF_t_70

发表评论

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

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

相关阅读