zoukankan      html  css  js  c++  java
  • 获取自然月的起始日期和终止日期

    获取自然月的起始日期和终止日期, 比如当前为 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;
    
    public class Test {
        public static void main(String[] args) {
            System.out.println(getFirstday_Lastday_Month(getZGKQTime()));
        }
    
        // 判断当前时间是否在早上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=2019-03-25, first=2019-02-26} ```
  • 相关阅读:
    POJ2442 Sequence
    等式
    GYM101635E Ingredients
    单片机之PID算法
    信号完整性一
    C程序编程规范一
    FATFS文件系统的移植
    FreeRTOS移植到STM32上的移植过程
    codeblocks+SDCC开发51单片机
    java5种打印数组
  • 原文地址:https://www.cnblogs.com/hgnulb/p/10119652.html
Copyright © 2011-2022 走看看