获取自然月的起始日期和终止日期

获取自然月的起始日期和终止日期, 比如当前为12月5日, 读取10月26日 - 11月25日的数据。

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.HashMap;
import java.util.Map;

/**
 * @author libin
 * @date 2018/12/14 15:14:06
 */
public class Demo {
    public static void main(String[] args) {
        System.out.println(getFirstday_Lastday_Month(getZGKQTime())); // 2018-12-14日执行
    }

    // 判断当前时间是否在早上8点之前还是之后
    public static String getZGKQTime() {
        Calendar c = Calendar.getInstance();
        int timeOfDay = c.get(Calendar.HOUR_OF_DAY);
        String queryTime = "";
        if (timeOfDay < 8) {
            c.add(Calendar.DATE, -1);
            queryTime = new SimpleDateFormat("yyyy-MM-dd").format(c.getTime());
        } else {
            queryTime = new SimpleDateFormat("yyyy-MM-dd").format(c.getTime());
        }
        return queryTime;
    }

    // 获取自然月的起始日期和终止日期,比如当前为12月5日,读取10月26日-11月25日的数据。
    private static Map<String, String> getFirstday_Lastday_Month(String dateStr) {
        SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
        Calendar calendar = Calendar.getInstance();
        try {
            Date date = df.parse(dateStr);
            calendar.setTime(date);
            calendar.add(Calendar.MONTH, 0);
        } catch (ParseException e) {
            e.printStackTrace();
        }
        Date theDate = calendar.getTime();
        String rqString = dateStr.substring(8, 10);
        String day_first, day_last;
        if ("25".compareTo(rqString) < 0) {
            // 本月第一天
            GregorianCalendar gcLast = (GregorianCalendar) Calendar.getInstance();
            gcLast.setTime(theDate);
            gcLast.set(Calendar.DAY_OF_MONTH, 25);
            day_first = df.format(gcLast.getTime());

            // 上个月最后一天
            calendar.add(Calendar.MONTH, -1); // 加一个月
            calendar.set(Calendar.DATE, 26); // 设置为该月第一天
            day_last = df.format(calendar.getTime());
        } else {
            // 上个月第一天
            calendar.add(Calendar.MONTH, -1); // 加一个月
            calendar.set(Calendar.DATE, 25); // 设置为该月第一天
            day_first = df.format(calendar.getTime());

            // 上上个月最后一天
            calendar.add(Calendar.MONTH, -1); // 加一个月
            calendar.set(Calendar.DATE, 26); // 设置为该月第一天
            day_last = df.format(calendar.getTime());
        }
        Map<String, String> map = new HashMap<String, String>();
        map.put("last", day_first);
        map.put("first", day_last);
        return map;
    }
}

点击查看结果

{last=2018-11-25, first=2018-10-26}

原文地址:https://www.cnblogs.com/hglibin/p/10119652.html

时间: 2024-11-07 05:09:01

获取自然月的起始日期和终止日期的相关文章

js获取自然周/自然月/自然日开始结束时间戳

/** * 获取自然月开始结束时间 * @param {*} year * @param {*} month */ function getMonthBeginEnd(year, month) { if (~~year === 0 || ~~month === 0) { throw new Error('年月参数错误'); } const result = {begin: 0, end: 0}; const target = new Date(); target.setFullYear(year

PHP 日期格式化和日期计算以及获取当前周、月头尾日期

PHP 日期格式化和日期计算以及当获取前周.月头尾日期 PHP 日期格式化示例代码: /** * 格式化时间 * $type:类型 * $strDate:需要处理的时间字符串 * * 年份 Y:四位年份 y:两位年份 * 月份 m: 两位数字月份 n: 一位数字月份 M:英文月 * 日期 d:两位数字日期 j:一位数字日期 D:英文日期 * 时:H .分:i .秒:s **/ public function GetFormatDate($type = 1,$strDate=''){ $time

js获取某周、某月、下月、某季度的开始日期、结束日期及判断日期第几周

/** * 获取某周.某月.上月.某季度的开始日期.结束日期及判断日期第几周 */ //格式化日期:yyyy-MM-dd function formatDate(date) { var myyear = date.getFullYear(); var mymonth = date.getMonth()+1; var myweekday = date.getDate(); if(mymonth < 10){ mymonth = "0" + mymonth; } if(myweekd

【C#日期系列】--C#获取某月第一天0分0秒以及最后一天59分59秒

工作中可能会遇到很多不常见的需求,比如这次需要获取某个月的第一天和最后一天 #region 取得某月的第一天0分0秒 /// <summary> /// 取得某月的第一天0分0秒 /// </summary> /// <param name="datetime">要取得月份的某一天</param> /// <returns></returns> public static DateTime FirstDayOfMo

C# 根据年、月、周、星期获得日期等

原文:C# 根据年.月.周.星期获得日期等 [参考] http://blog.csdn.net/livening/article/details/6049341 http://zhidao.baidu.com/question/378600365.html http://www.cnblogs.com/roy117/archive/2008/03/25/1121584.html 楼上几层的代码都太多了,不用那么复杂. 先跟你说一下原理: 1.国际上的WeekDay是从周日到周六的顺序 2.再说C

如何获取两个任意时间段内的所有日期(及其他处理日期时间的方法总结)

(1)用一下方法获取两个任意时间段内的所有日期,代码如下: #1.将字符串转换成datetime类型 def strtodatetime(datestr,format): return datetime.datetime.strptime(datestr,format) #2.时间转换成字符串,格式为2008-08-02 def datetostr(date): return str(date)[0:10] #3.两个日期相隔多少天,例:2008-10-03和2008-10-01是相隔两天 de

* 获取本周、本季度、本月、上月的开始日期、结束日期

/** * 获取本周.本季度.本月.上月的开始日期.结束日期 */ var now = new Date();                    //当前日期 var nowDayOfWeek = now.getDay();         //今天本周的第几天 var nowDay = now.getDate();              //当前日 var nowMonth = now.getMonth();           //当前月 var nowYear = now.getY

JS获取本周、本季度、本月、上月的开始日期、结束日期

/** * 获取本周.本季度.本月.上月的开始日期.结束日期 */var now = new Date(); //当前日期 var nowDayOfWeek = now.getDay(); //今天本周的第几天 var nowDay = now.getDate(); //当前日 var nowMonth = now.getMonth(); //当前月 var nowYear = now.getYear(); //当前年 nowYear += (nowYear < 2000) ? 1900 : 0

Java中获取指定日为星期几及其他日期操作

摘自:http://blog.csdn.net/cselmu9/article/details/8625530#t6 在开发中经常会使用到一些日期方面的操作,下面例子展示几个常用的操作. 1.取得指定日期是星期几 取得指定日期是星期几可以采用下面两种方式取得日期是星期几: a.使用Calendar类 1 //根据日期取得星期几 2 public static String getWeek(Date date){ 3 String[] weeks = {"星期日","星期一&q