标签:set format MONTH 日期 计算 Date calendar 归类 Calendar
import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; public class test3 { /** * 获取当前日期上一季度 开始时间 * * @return */ public static Date getStartQuarter(Date date) { Calendar startCalendar = Calendar.getInstance(); startCalendar.setTime(date); startCalendar.set(Calendar.MONTH, ((int) startCalendar.get(Calendar.MONTH) / 3 - 1) * 3); startCalendar.set(Calendar.DAY_OF_MONTH, 1); setMinTime(startCalendar); return startCalendar.getTime(); } /** * 获取当前日期上一季度 结束时间 * * @return */ public static Date getLastQuarter(Date date) { Calendar endCalendar = Calendar.getInstance(); endCalendar.setTime(date); endCalendar.set(Calendar.MONTH, ((int) endCalendar.get(Calendar.MONTH) / 3 - 1) * 3 + 2); endCalendar.set(Calendar.DAY_OF_MONTH, endCalendar.getActualMaximum(Calendar.DAY_OF_MONTH)); setMaxTime(endCalendar); return endCalendar.getTime(); } /** * 最小时间 * * @param calendar */ private static void setMinTime(Calendar calendar) { calendar.set(Calendar.HOUR_OF_DAY, 0); calendar.set(Calendar.MINUTE, 0); calendar.set(Calendar.SECOND, 0); calendar.set(Calendar.MILLISECOND, 0); } /** * 最大时间 * * @param calendar */ private static void setMaxTime(Calendar calendar) { calendar.set(Calendar.HOUR_OF_DAY, calendar.getActualMaximum(Calendar.HOUR_OF_DAY)); calendar.set(Calendar.MINUTE, calendar.getActualMaximum(Calendar.MINUTE)); calendar.set(Calendar.SECOND, calendar.getActualMaximum(Calendar.SECOND)); calendar.set(Calendar.MILLISECOND, calendar.getActualMaximum(Calendar.MILLISECOND)); } /** * 计算某日期所在季度开始日期 * 季度划分:1、2、3, 4、5、6, 7、8、9, 10、11、12 */ public static Date getSeasonEndDate (Date date) { Calendar calendar = Calendar.getInstance(); calendar.setTime(date); int month = calendar.get(Calendar.MONTH); calendar.set(Calendar.MONTH, (month + 3) / 3 * 3); calendar.set(Calendar.DATE, 1); return new Date(calendar.getTime().getTime() - 24 * 60 * 60 *1000); } /** * 计算某日期所在季度结束日期 * 季度划分:1、2、3, 4、5、6, 7、8、9, 10、11、12 */ public static Date getSeasonStartDate (Date date) { Calendar calendar = Calendar.getInstance(); calendar.setTime(date); int month = calendar.get(Calendar.MONTH); calendar.set(Calendar.MONTH, month / 3 * 3); calendar.set(Calendar.DATE, 1); return calendar.getTime(); } /** * 当前年的上一年 * @return */ public static String getYearBefore() { SimpleDateFormat formats = new SimpleDateFormat("yyyy"); Calendar c = Calendar.getInstance(); c.add(Calendar.YEAR, -1); Date date = c.getTime(); return formats.format(date); } /** * 获取当月(开始时间) * * @return */ public static String getCurrentMonthStartDate() { // 获取当前年份、月份、日期 Calendar cale = null; // 获取当月第一天 SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd"); String firstday; cale = Calendar.getInstance(); cale.add(Calendar.MONTH, 0); cale.set(Calendar.DAY_OF_MONTH, 1); firstday = format.format(cale.getTime()); return firstday; } /** * 获取当月(结束时间) * * @return */ public static String getCurrentMonthEndDate() { // 获取当前年份、月份、日期 Calendar cale = null; // 获取当月最后一天 SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd"); String lastday; cale = Calendar.getInstance(); cale.add(Calendar.MONTH, 1); cale.set(Calendar.DAY_OF_MONTH, 0); lastday = format.format(cale.getTime()); return lastday; } /** * 获取当季 * * @return */ public static DateRange getThisQuarter() { Calendar startCalendar = Calendar.getInstance(); startCalendar.set(Calendar.MONTH, ((int) startCalendar.get(Calendar.MONTH) / 3) * 3); startCalendar.set(Calendar.DAY_OF_MONTH, 1); setMinTime(startCalendar); Calendar endCalendar = Calendar.getInstance(); endCalendar.set(Calendar.MONTH, ((int) startCalendar.get(Calendar.MONTH) / 3) * 3 + 2); endCalendar.set(Calendar.DAY_OF_MONTH, endCalendar.getActualMaximum(Calendar.DAY_OF_MONTH)); setMaxTime(endCalendar); return new DateRange(startCalendar.getTime(), endCalendar.getTime()); } public static void main(String[] args) throws ParseException { SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); SimpleDateFormat f = new SimpleDateFormat("yyyy"); String str = "2022-01-01"; Date parse = format.parse(str); System.out.println(format.format(parse)); // Date startQuarter = getStartQuarter(new Date()); Date startQuarter = getStartQuarter(parse); System.out.println("获取当前日期上一季度 开始时间"+format.format(startQuarter)); // Date lastQuarter = getLastQuarter(new Date()); Date lastQuarter = getLastQuarter(parse); System.out.println("获取当前日期上一季度 结束时间:"+format.format(lastQuarter)); System.out.println("计算某日期所在季度开始日期:"+format.format(getSeasonStartDate(new Date()))); System.out.println("计算某日期所在季度结束日期:"+format.format(getSeasonEndDate(new Date()))); System.out.println("当前年的上一年:"+getYearBefore()); System.out.println("获取当月(开始时间):"+getCurrentMonthStartDate()); System.out.println("获取当月(结束时间):"+getCurrentMonthEndDate()); DateRange thisQuarter = getThisQuarter(); System.out.println("获取当季:"+thisQuarter.getStart()+"----"+thisQuarter.getEnd()); } }
标签:set,format,MONTH,日期,计算,Date,calendar,归类,Calendar 来源: https://www.cnblogs.com/zhaoyijunjava/p/16692765.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。