java获取某月,某季度的第一天和最后一天
2017-04-11 11:21
267 查看
/** * 某一个月第一天和最后一天 * * @param date 指定日期 * @param pattern 日期格式 * @param isNeedHms是否需要时分秒 * @return */ public static Map<String, Object> getFirstLastDayByMonth(Date date, String pattern, boolean isNeedHms) { SimpleDateFormat df = new SimpleDateFormat(pattern); Calendar calendar = Calendar.getInstance(); calendar.setTime(date); Date theDate = calendar.getTime(); // 第一天 GregorianCalendar gcLast = (GregorianCalendar) Calendar.getInstance(); gcLast.setTime(theDate); gcLast.set(Calendar.DAY_OF_MONTH, 1); String day_first = df.format(gcLast.getTime()); StringBuffer str = new StringBuffer().append(day_first); if (isNeedHms) str.append(" 00:00:00"); day_first = str.toString(); // 最后一天 calendar.add(Calendar.MONTH, 1); // 加一个月 calendar.set(Calendar.DATE, 1); // 设置为该月第一天 calendar.add(Calendar.DATE, -1); // 再减一天即为上个月最后一天 String day_last = df.format(calendar.getTime()); StringBuffer endStr = new StringBuffer().append(day_last); if (isNeedHms) endStr.append(" 23:59:59"); day_last = endStr.toString(); Map<String, Object> map = new HashMap<String, Object>(); map.put("first", day_first); map.put("last", day_last); return map; } /** * 获取当前季度 * */ public static String getQuarter() { Calendar c = Calendar.getInstance(); int month = c.get(c.MONTH) + 1; int quarter = 0; if (month >= 1 && month <= 3) { quarter = 1; } else if (month >= 4 && month <= 6) { quarter = 2; } else if (month >= 7 && month <= 9) { quarter = 3; } else { quarter = 4; } return quarter + ""; } /** * 获取某季度的第一天和最后一天 * @param num第几季度 */ public static String[] getCurrQuarter(int num) { String[] s = new String[2]; String str = ""; // 设置本年的季 Calendar quarterCalendar = null; switch (num) { case 1: // 本年到现在经过了一个季度,在加上前4个季度 quarterCalendar = Calendar.getInstance(); quarterCalendar.set(Calendar.MONTH, 3); quarterCalendar.set(Calendar.DATE, 1); quarterCalendar.add(Calendar.DATE, -1); str = DateUtils.formatDate(quarterCalendar.getTime(), "yyyy-MM-dd"); s[0] = str.substring(0, str.length() - 5) + "01-01"; s[1] = str; break; case 2: // 本年到现在经过了二个季度,在加上前三个季度 quarterCalendar = Calendar.getInstance(); quarterCalendar.set(Calendar.MONTH, 6); quarterCalendar.set(Calendar.DATE, 1); quarterCalendar.add(Calendar.DATE, -1); str = DateUtils.formatDate(quarterCalendar.getTime(), "yyyy-MM-dd"); s[0] = str.substring(0, str.length() - 5) + "04-01"; s[1] = str; break; case 3:// 本年到现在经过了三个季度,在加上前二个季度 quarterCalendar = Calendar.getInstance(); quarterCalendar.set(Calendar.MONTH, 9); quarterCalendar.set(Calendar.DATE, 1); quarterCalendar.add(Calendar.DATE, -1); str = DateUtils.formatDate(quarterCalendar.getTime(), "yyyy-MM-dd"); s[0] = str.substring(0, str.length() - 5) + "07-01"; s[1] = str; break; case 4:// 本年到现在经过了四个季度,在加上前一个季度 quarterCalendar = Calendar.getInstance(); str = DateUtils.formatDate(quarterCalendar.getTime(), "yyyy-MM-dd"); s[0] = str.substring(0, str.length() - 5) + "10-01"; s[1] = str.substring(0, str.length() - 5) + "12-31"; break; } return s; } /** * 用途:以指定的格式格式化日期字符串 * @param pattern 字符串的格式 * @param currentDate 被格式化日期 * @return String 已格式化的日期字符串 * @throws NullPointerException 如果参数为空 */ public static String formatDate(Date currentDate, String pattern){ if(currentDate == null || "".equals(pattern) || pattern == null){ return null; } SimpleDateFormat sdf = new SimpleDateFormat(pattern); return sdf.format(currentDate); }
相关文章推荐
- Java获取一年里某季、某月、某周的第一天及最后一天时间的完整代码如下:
- 【java】获取一年里某季、某月、某周的第一天及最后一天时间(日期工具类)
- java获取当前年份的第一天和最后一天和获取指定日期的季度
- Java实现获取某年某月第一天/最后一天的方法
- Java获取一年里某季、某月、某周的第一天及最后一天时间
- Java获取某年某月的第一天和最后一天
- java8使用date获取某月第一天的00:00:00&amp;amp;某月最后一天的23:59:59
- 获取某年某月的第一天和最后一天的Sql Server函数
- java获取年份的第一天和最后一天
- java 获取当前年份 月份,当月第一天和最后一天
- Java获取某年某月的最后一天
- java获取本月或某月的第一天和最后一天
- Java获取某年某月的最后一天
- java获取当月的第一天和最后一天
- java 获取当月第一天和最后一天 获取前一个月第一天和最后一天
- Java日期循环,Java获取当月的第一天和最后一天
- c#获取某月的第一天和某月的最后一天
- Java获取某年第一天与最后一天时间方法
- 获取某月第一天,最后一天的sql server脚本
- 获取每月第一天最后一天 java