1、本周第一天:
public static Date getStartTime4Week() throws Exception{
//SimpleDateFormat df=new SimpleDateFormat("yyyy-MM-dd");
Calendar cal = Calendar.getInstance();
int day_of_week = cal.get(Calendar.DAY_OF_WEEK) - 2;
cal.add(Calendar.DATE, -day_of_week);
/*String startTT = df.format(cal.getTime());
System.out.println("本周第一天: " + startTT);*/
return cal.getTime();
}
2、本周最后一天:
public static Date getEndTime4Week() throws Exception{
//SimpleDateFormat df=new SimpleDateFormat("yyyy-MM-dd");
Calendar cal = Calendar.getInstance();
int day_of_week = cal.get(Calendar.DAY_OF_WEEK) - 2;
cal.add(Calendar.DATE, -day_of_week);
cal.add(Calendar.DATE, 6);
/*String startTT = df.format(cal.getTime());
System.out.println("本周第一天: " + startTT);*/
return cal.getTime();
}
3、本月第一天:
public static Date getStartTime4Month() throws Exception{
//SimpleDateFormat df=new SimpleDateFormat("yyyy-MM-dd");
Calendar c = Calendar.getInstance();
c.add(Calendar.MONTH, 0);
c.set(Calendar.DAY_OF_MONTH,1);//设置为1号,当前日期既为本月第一天
//String first = df.format(c.getTime());
//System.out.println("===============first:"+first);
return c.getTime();
}
4、本月最后一天:
public static Date getEndTime4Month() throws Exception{
//SimpleDateFormat df=new SimpleDateFormat("yyyy-MM-dd");
Calendar ca = Calendar.getInstance();
ca.set(Calendar.DAY_OF_MONTH, ca.getActualMaximum(Calendar.DAY_OF_MONTH));
//String last = df.format(ca.getTime());
//System.out.println("===============last:"+last);
/*String startTT = df.format(cal.getTime());
System.out.println("本周第一天: " + startTT);*/
return ca.getTime();
}
5、上月第一天:
<pre name="code" class="java">public static Date getStartTime4PreMonth() throws Exception{
<pre name="code" class="java"> Calendar cal_1=Calendar.getInstance();//获取当前日期
cal_1.add(Calendar.MONTH, -1);
cal_1.set(Calendar.DAY_OF_MONTH,1);//设置为1号,当前日期既为本月第一天
firstDay = format.format(cal_1.getTime());
System.out.println("-----1------firstDay:"+firstDay);
return cal_1.getTime(); }
6、上月最后一天:
<pre name="code" class="java"><pre name="code" class="java">public static Date getStartTime4PreMonth() throws Exception{<span style="font-family: Arial, Helvetica, sans-serif;"> </span>
<pre name="code" class="java"><pre name="code" class="java"> Calendar cale = Calendar.getInstance();
cale.set(Calendar.DAY_OF_MONTH,0);//设置为1号,当前日期既为本月第一天
lastDay = format.format(cale.getTime());
System.out.println("-----2------lastDay:"+lastDay);
return cale.getTime();
}
7、计算两个日期之间相差的天数 :
public static int daysBetween(Date smdate,Date bdate) throws ParseException{
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
smdate=sdf.parse(sdf.format(smdate));
bdate=sdf.parse(sdf.format(bdate));
Calendar cal = Calendar.getInstance();
cal.setTime(smdate);
long time1 = cal.getTimeInMillis();
cal.setTime(bdate);
long time2 = cal.getTimeInMillis();
long between_days=(time2-time1)/(1000*3600*24);
return Integer.parseInt(String.valueOf(between_days));
}
8、字符串的日期格式的计算:
public static int daysBetween(String smdate,String bdate) throws ParseException{
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
Calendar cal = Calendar.getInstance();
cal.setTime(sdf.parse(smdate));
long time1 = cal.getTimeInMillis();
cal.setTime(sdf.parse(bdate));
long time2 = cal.getTimeInMillis();
long between_days=(time2-time1)/(1000*3600*24);
return Integer.parseInt(String.valueOf(between_days));
}
9、本季度第一天:
public static Date getStartTime4Quart() throws Exception{
SimpleDateFormat df=new SimpleDateFormat("yyyy-MM-dd");
Calendar c = Calendar.getInstance();
int currentMonth = c.get(Calendar.MONTH) + 1;
try {
if (currentMonth >= 1 && currentMonth <= 3)
c.set(Calendar.MONTH, 0);
else if (currentMonth >= 4 && currentMonth <= 6)
c.set(Calendar.MONTH, 3);
else if (currentMonth >= 7 && currentMonth <= 9)
c.set(Calendar.MONTH, 4);
else if (currentMonth >= 10 && currentMonth <= 12)
c.set(Calendar.MONTH, 9);
c.set(Calendar.DATE, 1);
System.out.println(df.format(c.getTime()));
} catch (Exception e) {
e.printStackTrace();
}
return c.getTime();
}
10、本季度最后一天:
public static Date getEndTime4Quart() throws Exception{
SimpleDateFormat df=new SimpleDateFormat("yyyy-MM-dd");
Calendar c = Calendar.getInstance();
int currentMonth = c.get(Calendar.MONTH) + 1;
try {
if (currentMonth >= 1 && currentMonth <= 3) {
c.set(Calendar.MONTH, 2);
c.set(Calendar.DATE, 31);
} else if (currentMonth >= 4 && currentMonth <= 6) {
c.set(Calendar.MONTH, 5);
c.set(Calendar.DATE, 30);
} else if (currentMonth >= 7 && currentMonth <= 9) {
c.set(Calendar.MONTH, 8);
c.set(Calendar.DATE, 30);
} else if (currentMonth >= 10 && currentMonth <= 12) {
c.set(Calendar.MONTH, 11);
c.set(Calendar.DATE, 31);
}
System.out.println(df.format(c.getTime()));
} catch (Exception e) {
e.printStackTrace();
}
return c.getTime();
}
11、本年第一天:
public static Date getStartTime4Year() throws Exception{
SimpleDateFormat df=new SimpleDateFormat("yyyy-MM-dd");
Calendar c = Calendar.getInstance();
try {
c.set(Calendar.MONTH, 0);
c.set(Calendar.DATE, 1);
System.out.println(df.format(c.getTime()));
} catch (Exception e) {
e.printStackTrace();
}
return c.getTime();
}
12、本年最后一天:
public static Date getEndTime4Year() throws Exception{
SimpleDateFormat df=new SimpleDateFormat("yyyy-MM-dd");
Calendar c = Calendar.getInstance();
try {
c.set(Calendar.MONTH, 11);
c.set(Calendar.DATE, 31);
System.out.println(df.format(c.getTime()));
} catch (Exception e) {
e.printStackTrace();
}
return c.getTime();
}
13、求两个日期之间的每一天
/**
* 获得日期字符串数组
* @param calendarType 日期跨度的类型,
* */
public static Date[] getDateArrays(Date start,Date end ,int calendarType){
ArrayList<Date> ret = new ArrayList<Date>();
Calendar calendar = Calendar.getInstance();
calendar.setTime(start);
Date tmpDate = calendar.getTime();
long endTime = end.getTime();
while(tmpDate.before(end)||tmpDate.getTime() == endTime){
ret.add(calendar.getTime());
calendar.add(calendarType, 1);
tmpDate = calendar.getTime();
}
Date[] dates = new Date[ret.size()];
return ret.toArray(dates);
}
@Test
public void getDateArrays2(){
Date date = DateUtils.getDate("2008-04-01");
Date date2 = DateUtils.getDate("2008-08-01");
Date[] strArray = DateUtils.getDateArrays(date, date2, Calendar.DAY_OF_YEAR);
for (Date string : strArray) {
System.out.println(DateUtils.getDayStr(string));
}
}
注:SimpleDateFormat是线程不安全的,放到类变量中需要注意。