以下爲親測,持續更新…
一、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