java获取过去12个月第一天和最后一天以及各种事件获取

package test;

import java.security.Timestamp;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;

public class test2 {

    public static void main(String[] args) {
        //获取过去12个月的第一天和最后一天集合
        // 获取当前年,月
        Calendar cal = Calendar.getInstance();
        int day = cal.get(Calendar.DATE);
        int month = cal.get(Calendar.MONTH) + 1;
        int year = cal.get(Calendar.YEAR);
        String str1;
        if (month < 10) {
            str1 = "0" + month + "";
        } else {
            str1 = month + "";
        }
        String str2 = year + "" + "-" + str1;
        // 处理月份输入条件
        if (str2.length() == 7) {
            str2 = str2 + "-01 00:00:00";
        } else if (str2.length() == 110) {
            str2 = str2.substring(0, 7) + "-01 00:00:00";
        }
        Date date = new Date();
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
        try {
            date = sdf.parse(str2);
        } catch (Exception e) {
            e.printStackTrace();
        }

        String[] last12Months = new String[12];
        Calendar cal1 = Calendar.getInstance();
        // 设置输入条件时间
        cal1.setTime(date);
        cal1.set(Calendar.MONTH, cal1.get(Calendar.MONTH) + 1); // 要先+1,才能把本月的算进去
        for (int i = 0; i < 12; i++) {
            cal1.set(Calendar.MONTH, cal1.get(Calendar.MONTH) - 1); // 逐次往前推1个月
            String str = String.valueOf(cal1.get(Calendar.MONTH) + 1);
            int strLen = str.length();
            if (strLen < 2) {
                while (strLen < 2) {
                    StringBuffer sb = new StringBuffer();
                    sb.append("0").append(str);// 左补0
                    // sb.append(str).append("0");//右补0
                    str = sb.toString();
                    strLen = str.length();
                }
            }
            last12Months[11 - i] = cal1.get(Calendar.YEAR) + "-" + str;
        }

        ArrayList<String> first = new ArrayList<>();
        ArrayList<String> last = new ArrayList<>();
        ArrayList<String> dataList = new ArrayList<>();

        SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM");
        SimpleDateFormat sf1 = new SimpleDateFormat("yyyy-MM-dd");
        SimpleDateFormat sf2 = new SimpleDateFormat("yy-MM");

        for (int i = 0; i < last12Months.length; i++) {
            try {
                // first
                Calendar cal2 = Calendar.getInstance();

                cal2.setTime(sf.parse(last12Months[i]));

                int last1 = cal2.getActualMinimum(Calendar.DAY_OF_MONTH);

                cal2.set(Calendar.DAY_OF_MONTH, last1);

                Date data1 = cal2.getTime();
                // last

                Calendar cal3 = Calendar.getInstance();

                cal3.setTime(sf.parse(last12Months[i]));

                int last2 = cal3.getActualMaximum(Calendar.DAY_OF_MONTH);

                cal3.set(Calendar.DAY_OF_MONTH, last2);

                Date data2 = cal3.getTime();

                // dataList

                System.out.println(sf2.format(data1)+"----");
                System.out.println(sf1.format(data1));
                System.out.println(sf1.format(data2)+"-------");

                first.add(sf1.format(data1));
                last.add(sf1.format(data2));
                dataList.add(sf2.format(data1));

            } catch (ParseException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }

        }
        
        for(int i=0;i<first.size();i++) {
            System.out.println(first.get(i));
            System.out.println(last.get(i));
            System.out.println(dataList.get(i));
        }
        SimpleDateFormat sf11=new SimpleDateFormat("yyyy-MM-dd");
        SimpleDateFormat sf12=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        long a=0,b=0;
          Date date1;
          Date date2;
          try {
              date1 = sf11.parse("2020-05-14");
              Date d=new Date();
              Date s= sf12.parse("2020-05-14 23:59:00");
              System.out.println(s);
              date2 = sf11.parse(sf12.format(s));
              a = date1.getTime();
              b = s.getTime();
          } catch (ParseException e) {

              e.printStackTrace();
          }
          System.out.println(a);
          System.out.println(b);

        
        long dateTime1 =1589385600000L;
        
        Date dated1 = new Date(dateTime1);

        System.out.println(dated1.toString());
        

        long dateTime =1589471940000L;

        Date dated = new Date(dateTime);

        System.out.println(dated.toString());
        
        SimpleDateFormat sf3=new SimpleDateFormat("yyyy-MM-dd");
        Calendar c = Calendar.getInstance();
        //1.过去七天
        c.setTime(new Date());
        c.add(Calendar.DATE, - 15);
        Date d = c.getTime();
        String start_date = sf3.format(d);
        System.out.println("开业前15天"+start_date+"-------");
        
        
        

    }
    
    public void days() {
        
        /*SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        Calendar c = Calendar.getInstance();
        //1.过去七天
        c.setTime(new Date());
        c.add(Calendar.DATE, - 7);
        Date d = c.getTime();
        String day = format.format(d);
        System.out.println("过去七天:"+day);
        //2.过去一月
        c.setTime(new Date());
        c.add(Calendar.MONTH, -1);
        Date m = c.getTime();
        String mon = format.format(m);
        System.out.println("过去一个月:"+mon);
        //3.过去三个月
        c.setTime(new Date());
        c.add(Calendar.MONTH, -3);
        Date m3 = c.getTime();
        String mon3 = format.format(m3);
        System.out.println("过去三个月:"+mon3);
        //4.过去一年
        c.setTime(new Date());
        c.add(Calendar.YEAR, -1);
        Date y = c.getTime();
        String year = format.format(y);
        System.out.println("过去一年:"+year);
        //5.现在时间24小时制  
        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");  
        String nowDate=format.format(new Date());  
        System.out.println(nowDate);  
        //6.当天的开始时间  
        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");  
        Calendar c = Calendar.getInstance();  
        String start = format.format(c.getTime())+" 00:00:00";  
        System.out.println(start);  
        //7.当天的截止时间  
        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");  
        Calendar calendar = Calendar.getInstance();  
        String end = format.format(calendar.getTime())+" 23:59:59";  
        System.out.println(end);  
        //8.当前时间的前一个星期 开始时间  
        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");  
        Calendar c = Calendar.getInstance();  
        c.add(Calendar.DAY_OF_MONTH, -6);  
        String start = format.format(c.getTime())+" 00:00:00";  
        System.out.println(start);  
        //9.当天日期前一个月  
        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");  
        Calendar c = Calendar.getInstance();  
        c.add(Calendar.MONTH, -1);    //得到前一个月    
        String start = format.format(c.getTime())+" 00:00:00";  
        System.out.println(start);  
        //10.当前时间的前一年开始时间  
        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");  
        Calendar c = Calendar.getInstance();  
        c.add(Calendar.YEAR, -1); //年份减1   
        String start =format.format(c.getTime())+" 00:00:00";  
        System.out.println(start);  
        //11.当前时间的周一时间和周末时间 setfirstdayofweek()方法  
        SimpleDateFormat format  = new SimpleDateFormat("YYYY-MM-dd ");  
        Calendar c = Calendar.getInstance();  
        c.set(Calendar.DAY_OF_WEEK,Calendar.MONDAY);  
        String weekStart = format.format(c.getTime())+" 00:00:00";  
        System.out.println(weekStart);  
        Calendar ca = Calendar.getInstance();  
        ca.setFirstDayOfWeek(Calendar.MONDAY);  
        ca.set(Calendar.DAY_OF_WEEK, ca.getFirstDayOfWeek() + 6); // Sunday  
        String weekEnd = format.format(ca.getTime())+" 23:59:59";  
        System.out.println(weekEnd);  
        //12.当前时所在月份的第一天和最后一天  
        SimpleDateFormat format=new SimpleDateFormat("yyyy-MM-dd");  
        Calendar c = Calendar.getInstance();      
        c.set(Calendar.DAY_OF_MONTH,1);//设置为1号,当前日期既为本月第一天   
        String monthStart = format.format(c.getTime())+" 00:00:00";  
        System.out.println(monthStart);  
        Calendar ca = Calendar.getInstance();      
        ca.set(Calendar.DAY_OF_MONTH, ca.getActualMaximum(Calendar.DAY_OF_MONTH));    
        String monthEnd = format.format(ca.getTime())+" 23:59:59";  
        System.out.println(monthEnd);  
        //13.当期时间所在年份的开始时间  
        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");  
        Calendar c = Calendar.getInstance();  
        c.set(c.get(Calendar.YEAR) ,0, 1);//开始时间日期  
        String yearStart = format.format(c.getTime())+" 00:00:00";  
        System.out.println(yearStart);  
        Calendar ca = Calendar.getInstance();  
        ca.set(ca.get(Calendar.YEAR) ,11, ca.getActualMaximum(Calendar.DAY_OF_MONTH));//结束日期  
        String yearEnd = format.format(ca.getTime())+" 23:59:59";  
        System.out.println(yearEnd);  
        //14.计算时间差取得两个时间的微秒级的时间差
        //得微秒级时间差    
        long val = calendarEnd.getTimeInMillis() - calendarBegin.getTimeInMillis();    
        //换算后得到天数    
        long day = val / (1000 * 60 * 60 * 24);
        //15.获取某个时间的上周一和周日
        Calendar cal = Calendar.getInstance();
        //n为推迟的周数,1本周,-1向前推迟一周,2下周,依次类推
        int n = 1;
        String monday;
        cal.add(Calendar.DATE, n*7);
        //想周几,这里就传几Calendar.MONDAY(TUESDAY...)
        cal.set(Calendar.DAY_OF_WEEK,Calendar.MONDAY);
        monday = new SimpleDateFormat("yyyy-MM-dd").format(cal.getTime());
        System.out.println(monday);
        */
    }

}
 

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值