java日期时间API

 

 1、整体结构:

2、JAVA中日期 yyyy-MM-dd  HH:mm:ss和yyyy-MM-dd hh:mm:ss的区别 

HH是24小时制,hh是12小时制

Java里面MM表示月 mm表示分钟 HH表示 24小时制 hh表示12小时制

mm与m等,它们的区别为是否有前导零:H,m,s表示非零开始,HH,mm,ss表示从零开始。

比如凌晨1点2分,HH:mm显示为01:02,H:m显示为1:2

 例:

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//24小时制

SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");//12小时制
String date1 = "2017-04-23 16:45:12";
try {
sdf.parse(date1);
System.out.println(sdf.format(sdf.parse(date1))); //2017-04-23 16:45:12
System.out.println(sdf1.format(sdf.parse(date1))); //2017-04-23 04:45:12
} catch (ParseException e) {
e.printStackTrace();
}

3、字符串--时间互转:

// 
public static Date dateParse(String param, String format) {
        Date date = null;
        SimpleDateFormat sdf = new SimpleDateFormat(format);//yyyy-MM-dd HH:mm:ss
        try {
            date = sdf.parse(param);

        } catch (ParseException ex) {
            ex.printStackTrace();
        }
        return date;
    }



//
public static String dateToStr(Date date, String format) {

        SimpleDateFormat sdf = new SimpleDateFormat(format);
        String dataStr=null;
        try {
            dataStr=sdf.format(date);

        } catch (Exception ex) {
            ex.printStackTrace();
        }
        return dataStr;
    }


    /*
     * 将当前日期加减n天数。 
       如传入字符型 "-5 " 意为将当前日期减去5天的日期 
       如传入字符型 "5 " 意为将当前日期加上5天后的日期 返回字串
	 * 例(2000-02-01)
	 */
    public static Date dateAdd(int strTo) {
        Calendar strDate = Calendar.getInstance(); // java.util包
        strDate.add(strDate.DATE, strTo); // 日期减 如果不够减会将月变动
        return strDate.getTime();
    }

4、获取需要的时间格式: 

 SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");

        //获取前月的第一天2018-10-01
        Calendar cale = Calendar.getInstance();
        cale.add(Calendar.MONTH, 0);//增加到第几个月的
        cale.set(Calendar.DAY_OF_MONTH, 1);//设置第几天的
        String firstDay = format.format(cale.getTime());
        System.out.println("-----1------当前月第一天"+firstDay);


        //获取当前时间2018-10-11
        String currentTime = format.format(new Date());
        System.out.println("-----2------当前时间 " + currentTime);


        //获取上月的第一天2018-9-01
        Calendar   cal_1 = Calendar.getInstance();
        cal_1.add(Calendar.MONTH, -1);
        cal_1.set(Calendar.DAY_OF_MONTH,1);
        String previousFirstDay = format.format(cal_1.getTime());
        System.out.println("-----3------上月第一天:"+previousFirstDay);


        //2018-09-11
        Calendar   cal = Calendar.getInstance();
        cal.add(Calendar.MONTH, -1); 
        String defaultStartDate = format.format(cal.getTime());
        System.out.println("-----4------上月当前时间:"+defaultStartDate);


        //2017-10-01
        Calendar call = Calendar.getInstance();
        call.add(Calendar.YEAR, -1);
        call.set(Calendar.DAY_OF_MONTH, 1);
        String   previous = format.format(call.getTime());
        System.out.println("-----5------上一年当前月第一天:"+previous);


        //2017-10-11
        Calendar ca = Calendar.getInstance();
        ca.add(Calendar.YEAR, -1); 
        String previousCurrentTime = format.format(ca.getTime());
        System.out.println("-----6------上一年当前月当前时间:"+previousCurrentTime);


        //2018-01-01
        Calendar c = Calendar.getInstance();
        c.set(Calendar.MONTH, 0);
        c.set(Calendar.DAY_OF_MONTH, 1);
        String time = format.format(c.getTime());
        System.out.println("-----7------第一月第一天:"+time);


        //2017-01-01
        Calendar cc = Calendar.getInstance();
        cc.add(Calendar.YEAR, -1);
        cc.set(Calendar.MONTH, 0);
        cc.set(Calendar.DAY_OF_MONTH, 1);
        String year = format.format(cc.getTime());
        System.out.println("-----8------前一年第一月第一天:"+year);

 

/**
     * 获取某段时间内的周一(二等等)的日期
     * @param dataBegin 开始日期 2020-07-04
     * @param dataEnd 结束日期 2020-07-14
     * @param weekDays 获取周几,1-6代表周一到周六。0代表周日
     * @return 返回日期List
     */
    public static List<String> getDayOfWeekWithinDateInterval(Date dataBegin, Date dataEnd, int weekDays) {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        List<String> dateResult = new ArrayList<>();
        Calendar cal = Calendar.getInstance();
        String[] dateInterval = {sdf.format(dataBegin),sdf.format(dataEnd) };
        Date[] dates = new Date[dateInterval.length];
        for (int i = 0; i < dateInterval.length; i++) {
            String[] ymd = dateInterval[i].split("[^\\d]+");
            cal.set(Integer.parseInt(ymd[0]), Integer.parseInt(ymd[1]) - 1, Integer.parseInt(ymd[2]));
            dates[i] = cal.getTime();
        }
        for (Date date = dates[0]; date.compareTo(dates[1]) <= 0; ) {
            cal.setTime(date);
            if (cal.get(Calendar.DAY_OF_WEEK) - 1 == weekDays) {
                String format = sdf.format(date);
                dateResult.add(format);
            }
            cal.add(Calendar.DATE, 1);
            date = cal.getTime();
        }
        return dateResult;
    }
/**
     *  在时间间隔中统计出有几个5号
     * @return
     * @author Jia
     * @date 2020/7/30
     **/
    public static  int countDays(Date sdate,Date eDate){
        SimpleDateFormat df=new SimpleDateFormat("yyyy-MM-dd");
        Calendar c = Calendar.getInstance();
        List<String> list=new ArrayList<String>();
        while (sdate.getTime()<=eDate.getTime()) {
            list.add(df.format(sdate));
            c.setTime(sdate);
            c.add(Calendar.DATE, 1); // 日期加1天
            sdate = c.getTime();
        }
        int count = 0;
        for (int i = 0; i < list.size(); i++) {
          String str = list.get(i).substring(8);
          if("05".equals(str)){
              count = count +1;
          }
            System.out.println(str);
        }
        return count;
    }

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值