获取到指定时间区间的月份集合,以及月份集合的月份第一天和最后一天

    由于接口的需要,我参考了很多的获取月份的博客,经过一些的测试,完成了下面的测试,不足之处是:
    目前还是不能直接在获取第一天和最后一天的方法里面添加时分秒,所以还得再研究。
package com.hopechart.gtos.action.gps.servlet;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.List;
import java.util.Locale;

import org.apache.commons.javaflow.bytecode.Continuable;



public class test {

    private static List<String> getMonthBetween(String minDate, String maxDate) throws ParseException {
         SimpleDateFormat sdf = new SimpleDateFormat("yyyyMM");//格式化为年月
         ArrayList<String> result = new ArrayList<String>();
        Calendar min = Calendar.getInstance();
        Calendar max = Calendar.getInstance();

        min.setTime(sdf.parse(minDate));
        min.set(min.get(Calendar.YEAR), min.get(Calendar.MONTH), 1);

        max.setTime(sdf.parse(maxDate));
        max.set(max.get(Calendar.YEAR), max.get(Calendar.MONTH), 2);

        Calendar curr = min;
        while (curr.before(max)) {
         result.add(sdf.format(curr.getTime()));
         curr.add(Calendar.MONTH, 1);
        }

        return result;
      }
    /**
      * 得到某年某月的第一天
      * 
      * @param year
      * @param month
      * @return
     * @throws ParseException 
      */
     public static String getMonthFirstDay(String startTime) throws ParseException {
            SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");//格式化为年月
            Calendar calendar = Calendar.getInstance();     
            try {
                calendar.setTime(sdf.parse(startTime+"01"));
            } catch (ParseException e) {
                e.printStackTrace();
            }
            String Strat = sdf.format(calendar.getTime());
            return Strat;   
     }
    /**   
     * 得到本月的最后一天   
     * @return   
     */    
    public static String  getMonthEndDay(String endDay) {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");//格式化为年月
        Calendar calendar = Calendar.getInstance();     
        try {
            calendar.setTime(sdf.parse(endDay+"01"));
        } catch (ParseException e) {
            e.printStackTrace();
        }
        calendar.add(Calendar.MONTH,1);//日期倒数一日,既得到本月最后一天
        calendar.add(Calendar.DAY_OF_MONTH, -1);
        String end =sdf.format(calendar.getTime());
        return end;    
    }     

    public static void getMonth(String start, String end ) {
        try {
            List list = getMonthBetween(start, end);
            String ensdata = null;
            List ListS= new ArrayList();
            List ListE= new ArrayList();
            for (int i=0;i<list.size();i++){
                Object data =list.get(i);
                 ensdata = data.toString();
                 ListE.add(getMonthEndDay(ensdata)+"235959") ;
                 ListS.add(getMonthFirstDay(ensdata)+"000000");
            }
            System.out.println("开始"+ListS);
            System.out.println("结束"+ListE);
        } catch (ParseException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

    }
    public static void main(String[] args) {
        getMonth("201511","201603");
    }
    }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
获取本周的时间区间并且补零月份,你可以在格式化日期字符串时使用 `padStart()` 方法来补零。以下是修改后的代码示例: ```javascript // 获取当前日期 var today = new Date(); // 获取当前日期是本周的第几天(0-6,0 表示星期日) var currentDay = today.getDay(); // 计算本周的起始日期 var startDate = new Date(today); startDate.setDate(today.getDate() - currentDay); // 计算本周的结束日期 var endDate = new Date(startDate); endDate.setDate(startDate.getDate() + 6); // 格式化日期为字符串,用 "-" 分隔并补零月份 var startDateString = startDate.toLocaleDateString('en-US', { year: 'numeric', month: '2-digit', day: '2-digit' }).replace(/\//g, '-'); var endDateString = endDate.toLocaleDateString('en-US', { year: 'numeric', month: '2-digit', day: '2-digit' }).replace(/\//g, '-'); // 输出结果 console.log("本周起始日期:" + startDateString); console.log("本周结束日期:" + endDateString); ``` 在这段代码,我们使用 `toLocaleDateString()` 方法来格式化日期为字符串,并传入选项参数 `{ year: 'numeric', month: '2-digit', day: '2-digit' }` 来获取年份、月份日期,并保证月份日期都是两位数。然后使用 `replace()` 方法将日期字符串的正斜杠 `/` 替换为短横线 `-`,以实现用短横线分隔的日期格式。 输出结果示例: ``` 本周起始日期:2022-01-09 本周结束日期:2022-01-15 ``` 请注意,这里的格式化方式假设你的本地环境日期格式默认为 `/日/年`,如果不是,请相应地调整代码的格式化方式。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值