写点什么

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

  • 2022 年 4 月 29 日
  • 本文字数:1414 字

    阅读完需:约 5 分钟

//输入一个时间,获取对应的自然月开始时间 和结束时间


public static Map getMonthStartTimeByDate(String dateTime) throws ParseException {


SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");


Date date = simpleDateFormat.parse(dateTime);


long currentTime = date.getTime();


String timeZone = "GMT+8:00";


Calendar calendar = Calendar.getInstance();// 获取当前日期


calendar.setTimeZone(TimeZone.getTimeZone(timeZone));


calendar.setTimeInMillis(currentTime);


calendar.add(Calendar.YEAR, 0);


calendar.add(Calendar.MONTH, 0);


calendar.set(Calendar.DAY_OF_MONTH, 1);// 设置为 1 号,当前日期既为本月第一天


calendar.set(Calendar.HOUR_OF_DAY, 0);


calendar.set(Calendar.MINUTE, 0);


calendar.set(Calendar.SECOND, 0);


calendar.set(Calendar.MILLISECOND, 0);


long timeInMillis = calendar.getTimeInMillis();


Date resultStartDate = new Date(timeInMillis);


String resultStartTime = simpleDateFormat.format(resultStartDate);


Calendar calendar2 = Calendar.getInstance();// 获取当前日期


calendar2.setTimeZone(TimeZone.getTimeZone(timeZone));


calendar2.setTimeInMillis(currentTime);


calendar2.add(Calendar.YEAR, 0);


calendar2.add(Calendar.MONTH, 0);


calendar2.set(Calendar.DAY_OF_MONTH, calendar.getActualMaximum(Calendar.DAY_OF_MONTH));// 获取当前月最后一天


calendar2.set(Calendar.HOUR_OF_DAY, 23);


calendar2.set(Calendar.MINUTE, 59);


calendar2.set(Calendar.SECOND, 59);


calendar2.set(Calendar.MILLISECOND, 999);


long timeInMillis2 = calendar2.getTimeInMillis();


Date resultEndDate = new Date(timeInMillis2);


String resultEndTime = simpleDateFormat.format(resultEndDate);


Map map = new HashMap();


map.put("startDate", resultStartTime);


map.put("endDate", resultEndTime);


return map;


}


//输入一个时间,获取对应的自然年开始时间,结束时间


public static Map getYearStartTimeByDate(String dateTime) throws ParseException {


SimpleDateFormat simpleDate 《一线大厂 Java 面试题解析+后端开发学习笔记+最新架构讲解视频+实战项目源码讲义》无偿开源 威信搜索公众号【编程进阶路】 Format = new SimpleDateFormat("yyyy-MM-dd");


Date date = simpleDateFormat.parse(dateTime);


GregorianCalendar gc = (GregorianCalendar) Calendar.getInstance();


gc.setTime(date);


Calendar cal = Calendar.getInstance();


cal.set(Calendar.YEAR, Integer.valueOf(gc.get(1)));


cal.set(Calendar.MONTH, Calendar.JANUARY);


cal.set(Calendar.DATE, 1);


Long dayStartTime = getDayStartTime(cal.getTime());


Date resultStartDate = new Date(dayStartTime);


String resultStartTime = simpleDateFormat.format(resultStartDate);


Calendar cal2 = Calendar.getInstance();


cal2.set(Calendar.YEAR, Integer.valueOf(gc.get(1)));


cal2.set(Calendar.MONTH, Calendar.DECEMBER);


cal2.set(Calendar.DATE, 31);


Long dayEndTime = getDayStartTime(cal2.getTime());


Date resultEndDate = new Date(dayEndTime);


String resultEndTime = simpleDateFormat.format(resultEndDate);


Map map = new HashMap();


map.put("startDate", resultStartTime);


map.put("endDate", resultEndTime);


return map;


}

用户头像

还未添加个人签名 2022.04.13 加入

还未添加个人简介

评论

发布
暂无评论
Java  输入一个字符串格式日期,获取对应的自然月开始结束时间,对应的自然年开始结束时间(1)_Java_爱好编程进阶_InfoQ写作社区