Calendar根據當前(指定)日期取出指定時間

以下爲親測,持續更新…

一、Calendar根據當前(指定)日期取出本週一本週日和下週一下週日時間

根據Calendar.java中定義的DAY_OF_WEEK來看

/**
     * Field number for <code>get</code> and <code>set</code> indicating the day
     * of the week.  This field takes values <code>SUNDAY</code>,
     * <code>MONDAY</code>, <code>TUESDAY</code>, <code>WEDNESDAY</code>,
     * <code>THURSDAY</code>, <code>FRIDAY</code>, and <code>SATURDAY</code>.
     *
     * @see #SUNDAY
     * @see #MONDAY
     * @see #TUESDAY
     * @see #WEDNESDAY
     * @see #THURSDAY
     * @see #FRIDAY
     * @see #SATURDAY
     */
    public final static int DAY_OF_WEEK = 7;

可以看出,週日作爲一週的第一天,週六爲最後一天
但是按照中國習慣,一週的週一應該爲第一天,週日爲最後一天
因此通過以下代碼可以實現

根據當前(指定)日期,取出本週週一和週日,下週週一和週日

代碼如下:

package com.aaa.test.entity;

import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

/**
 * @program: 
 * @Date: 2019/10/27 15:35
 * @Author: Mr.SU
 * @Description:
 */
public class Test {
    public static void main(String[] args) throws Exception{
        Date date = new Date();
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        String currDate = sdf.format(date);

        //按中國習慣,週一爲第一天,週日爲最後一天
        //取出週一和週日,
        Date time0 = new SimpleDateFormat("yyyy-MM-dd").parse("2019-11-04");
        Calendar cal = Calendar.getInstance();
        cal.setTime(time0);
        String mon = "";
        String sun = "";
        String nextmon = "";
        String nextsun = "";
        Date monday = null;
        Calendar calSun = Calendar.getInstance();
        calSun.setTime(time0);
        //判斷當前日期是否是週日
        if (cal.get(Calendar.DAY_OF_WEEK) == Calendar.SUNDAY) {  //是週日,取出當前時間,往前減六天,取出當前周 週一時間
            
            calSun.set(Calendar.DATE, calSun.get(Calendar.DATE) - 6);
            monday = calSun.getTime();
            mon = sdf.format(monday);
            sun = sdf.format(time0);
            System.out.println(mon);  //本週一日期
            System.out.println(sun);  //本週日日期
            
        } else {  //不是週日,取出當前周 週一時間,往後加6天,去週日時間

            //關於DAY_OF_WEEK的說明
            //Field number for get and set indicating
            //the day of the week. This field takes values
            //SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY,
            //and SATURDAY
            calSun.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);
            monday = calSun.getTime();    //本週一

            Calendar cal2 = Calendar.getInstance();
            cal2.setTime(monday);
            cal2.set(Calendar.DATE, cal2.get(Calendar.DATE) + 6);
            Date sunday = cal2.getTime();
            mon = sdf.format(monday);
            sun = sdf.format(sunday);
            System.out.println(mon);  //本週一日期
            System.out.println(sun);  //本週日日期
        }

        //根據當前日期取下週一和下週日
        //取下週一下週日
        Calendar nextCal = Calendar.getInstance();
        nextCal.setTime(monday);
        nextCal.set(Calendar.DATE, nextCal.get(Calendar.DATE) + 7);
        Date nextMonday = nextCal.getTime();  //下週一
        nextCal.set(Calendar.DATE, nextCal.get(Calendar.DATE) + 6);
        Date nextSunday = nextCal.getTime();  //下週日
        nextmon = sdf.format(nextMonday);
        nextsun = sdf.format(nextSunday);
        System.out.println(nextmon);  //下週一日期
        System.out.println(nextsun);  //下週日日期
    }
}


二、 Calendar根據當前(指定)日期取本月第一天和最後一天

		//查詢本月第一天和最後一天
        Calendar cal3 = Calendar.getInstance();
        cal3.set(Calendar.DAY_OF_MONTH,1);
        System.out.println("本月第一天:"+cal3.getTime());
        cal3.roll(Calendar.DATE,-1);
        System.out.println("本月最後一天:"+cal3.getTime());

三、 Calendar根據當前(指定)日期取上月月末和上上月末

 		SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
        Calendar cale = Calendar.getInstance();
        cale.set(Calendar.DAY_OF_MONTH, 0);//上月月末
        LastDay = format.format(cale.getTime());
        logger.info("------------LastDay:" + LastDay);
        cale.set(Calendar.DAY_OF_MONTH, 0);//上上月月末
        LLastday= format.format(cale.getTime());
        logger.info("------------LLastday:" + LLastday);

四、 Calendar根據當前(指定)日期取前一天凌晨0點和當天凌晨0點

	/**
    * @Description: 獲取前一天凌晨0點和當天凌晨0點
    * @param: "[page]"
    * @Return: com.sinosoft.entity.Page
    * @Author: supenghui
    * @Date: 2019/12/13 3:10
    */
    public Page getDate(Page page){
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.ssssss");

        //獲取前一天的凌晨和當天凌晨0點
        Calendar ca = Calendar.getInstance();
        ca.set(Calendar.HOUR_OF_DAY,0);
        ca.set(Calendar.MINUTE,0);
        ca.set(Calendar.SECOND,0);
        Date cd = ca.getTime();
        String currDate = sdf.format(cd);
        ca.add(Calendar.DAY_OF_MONTH,-1);
        Date fd = ca.getTime();
        String frontDate = sdf.format(fd);

        page.getPd().put("frontDate",frontDate);   //昨天凌晨0點
        page.getPd().put("currDate",currDate);      //當天凌晨零點

        return page;
    }

author:su1573

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章