日积月累--java日期操作

/**
* 获取前一天
* @param startDate 任意一天[yyyy-MM-dd]
* @return
* @throws ParseException
*/
private String upDay(String startDate) throws ParseException{
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
Date date = format.parse(startDate);
Calendar c = Calendar.getInstance();
c.setTime(date);
c.add(Calendar.DAY_OF_MONTH, -1);
Date update = c.getTime();
return format.format(update);
}

/**
* 根据一周中任意一天 找到 周一,周末
* @param week 任意一天【yyyy-MM-dd】
* @return
* @throws ParseException
*/
private String[] getWeekday(String week) throws ParseException{
//周一
   SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
   Date date = sdf.parse(week);
   Calendar ca = Calendar.getInstance();
   ca.setTime(date);
   int dofw = ca.get(Calendar.DAY_OF_WEEK);
   if(dofw==1){
       ca.add(Calendar.DAY_OF_MONTH, -1);
   }
   ca.set(Calendar.DAY_OF_WEEK, 1);
   ca.add(Calendar.DAY_OF_MONTH, 1);
   String weekStart =  sdf.format(ca.getTime());
   
   //周末
Calendar caend = Calendar.getInstance();
caend.setTime(ca.getTime());
caend.add(Calendar.DAY_OF_MONTH, 7);
String weekEnd = sdf.format(caend.getTime());
   
   return new String[]{weekStart, weekEnd};
}

/**
* 获取前7天的日期
* @param week 每周周一日期【yyyy-MM-dd】
* @return
* @throws ParseException
*/
private String[] getUpWeek(String week) throws ParseException{
//上周-周一
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
   Date date = sdf.parse(week);
Calendar castart = Calendar.getInstance();
castart.setTime(date);
castart.add(Calendar.DAY_OF_MONTH, -7);
String weekStart = sdf.format(castart.getTime());

//上周-周末
Calendar caend = Calendar.getInstance();
caend.setTime(castart.getTime());
caend.add(Calendar.DAY_OF_MONTH, 7);
String weekEnd = sdf.format(caend.getTime());

return new String[]{weekStart, weekEnd};

}


/**
* 获得本月最后一天
* @param farstDay当月任意某天【yyyy-MM-dd】
* @return
* @throws ParseException
*/
private String getLastDayByMonth(String farstDay) throws ParseException{
Date date = null;
        String day_last = null;
        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
        date = format.parse(farstDay);
        
        //创建日历
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        calendar.add(Calendar.MONTH, 1);    //加一个月
        calendar.set(Calendar.DATE, 1);     //设置为该月第一天
        calendar.add(Calendar.DATE, -1);    //再减一天即为上个月最后一天
        day_last = format.format(calendar.getTime());
        return day_last;
}

/**
* 获得上月第一天和最后一天
* @param farstDay当前月第一天【yyyy-MM-dd】
* @return
* @throws ParseException
*/
private String[] getUpMonth(String farstDay) throws ParseException{
//上月-第一天
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
   Date date = sdf.parse(farstDay);
Calendar castart = Calendar.getInstance();
castart.setTime(date);
castart.add(Calendar.MONTH, -1);
String monthStart = sdf.format(castart.getTime());

//上月-最后一天
Calendar caend = Calendar.getInstance();
caend.setTime(date);
caend.add(Calendar.DATE, -1);
String weekEnd = sdf.format(caend.getTime());

return new String[]{monthStart, weekEnd};
}


//以上周4--本周3为一个周期,取任意一天所在周期内的第一天和最后一天

public String[] getCycleTime(String date) throws ParseException{
return this.getCycleTime(date, true);
}
public String[] getCycleTime(String date, boolean isCurrentCycleTime) throws ParseException{
//上周4--本周3为一周期
//提供任何一天,计算出本周期的开始日期,结束日期
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date dateT = sdf.parse(date);
Calendar ca = Calendar.getInstance();
ca.setTime(dateT);
int dofw = ca.get(Calendar.DAY_OF_WEEK);
System.out.println("=" + dofw);

if(isCurrentCycleTime){
if(dofw <= 4){
//星期三
ca.add(Calendar.DAY_OF_MONTH, -dofw); //设置为上周某天
}
}else{
if(dofw <= 4){
//星期三
ca.add(Calendar.DAY_OF_MONTH, -dofw - 7); //设置为上上周某天
}else{
ca.add(Calendar.DAY_OF_MONTH, -7); //设置为上周某天
}
}

//设置本周第一天的日期(本周第一天为周日)
ca.set(Calendar.DAY_OF_WEEK, 1);
ca.add(Calendar.DAY_OF_MONTH, 4);
String weekStart =  sdf.format(ca.getTime());

Calendar caend = Calendar.getInstance();
caend.setTime(ca.getTime());
caend.add(Calendar.DAY_OF_MONTH, 6);
String weekEnd = sdf.format(caend.getTime());


System.out.println( weekStart );
System.out.println( weekEnd );

return new String[]{weekStart, weekEnd};
}


//以上周4--本周3为一个周期,取任意一天所在周期的上一周期的第一天和最后一天
public String[] getUpCycleTime(String date) throws ParseException{
return this.getCycleTime(date, false);
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

绿竹痕

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值