// 判斷開始時間在星期幾的位置
public static int getStartTimeIndex(Date startTime) {
SimpleDateFormat sdf = new SimpleDateFormat("EEE");
System.out.println("今天的日期: " + sdf.format(startTime));
String str = sdf.format(startTime);
if ("星期日".equals(str)) {
return 1;
} else if ("星期一".equals(str)) {
return 2;
} else if ("星期二".equals(str)) {
return 3;
} else if ("星期三".equals(str)) {
return 4;
} else if ("星期四".equals(str)) {
return 5;
} else if ("星期五".equals(str)) {
return 6;
} else if ("星期六".equals(str)) {
return 7;
}
return 0;
}
//獲得兩個日期的中間間隔天數
public static int getDateSpace(Date date1, Date date2) {
int result = 0;
Calendar calst = Calendar.getInstance();
;
Calendar caled = Calendar.getInstance();
calst.setTime(date1);
caled.setTime(date2);
// 設置時間爲0時
calst.set(Calendar.HOUR_OF_DAY, 0);
calst.set(Calendar.MINUTE, 0);
calst.set(Calendar.SECOND, 0);
caled.set(Calendar.HOUR_OF_DAY, 0);
caled.set(Calendar.MINUTE, 0);
caled.set(Calendar.SECOND, 0);
// 得到兩個日期相差的天數
int days = ((int) (caled.getTime().getTime() / 1000) - (int) (calst.getTime().getTime() / 1000)) / 3600 / 24;
return days;
}
/**
* 根據日期獲得所在周的日期
*
* @param mdate
* @return
*/
@SuppressWarnings("deprecation")
public static List<Date> dateToWeek(Date mdate) {
int b = mdate.getDay();
Date fdate;
List<Date> list = new ArrayList<Date>();
Long fTime = mdate.getTime() - (b + 1) * 24 * 3600000;
for (int a = 1; a <= 7; a++) {
fdate = new Date();
fdate.setTime(fTime + (a * 24 * 3600000));
list.add(a - 1, fdate);
}
return list;
}
//獲取上一週所有的日期
@SuppressWarnings("deprecation")
public static List<Date> dateToLastWeek(Date mdate) {
int b = mdate.getDay();
Date fdate;
List<Date> list = new ArrayList<Date>();
Long fTime = mdate.getTime() - (b + 8) * 24 * 3600000;
for (int a = 1; a <= 7; a++) {
fdate = new Date();
fdate.setTime(fTime + (a * 24 * 3600000));
list.add(a - 1, fdate);
}
return list;
}
// 日期向前向後推遲幾天
public static Date delayDate(Date enddate, int num) {
try {
SimpleDateFormat dft = new SimpleDateFormat("yyyy-MM-dd");
Calendar date = Calendar.getInstance();
date.setTime(enddate);
date.set(Calendar.DATE, date.get(Calendar.DATE) + num);
Date newDate = dft.parse(dft.format(date.getTime()));
return newDate;
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
// 根據日期獲取到那周的週一是哪天
public static Date getMonday(Date time) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Calendar cal = Calendar.getInstance();
cal.setTime(time);
//判斷要計算的日期是否是週日,如果是則減一天計算週六的,否則會出問題,計算到下一週去了
int dayWeek = cal.get(Calendar.DAY_OF_WEEK);//獲得當前日期是一個星期的第幾天
if (1 == dayWeek) {
cal.add(Calendar.DAY_OF_MONTH, -1);
}
// System.out.println("要計算日期爲:"+sdf.format(cal.getTime()));
cal.setFirstDayOfWeek(Calendar.MONDAY);//設置一個星期的第一天,按中國的習慣一個星期的第一天是星期一
int day = cal.get(Calendar.DAY_OF_WEEK);//獲得當前日期是一個星期的第幾天
cal.add(Calendar.DATE, cal.getFirstDayOfWeek()-day);//根據日曆的規則,給當前日期減去星期幾與一個星期第一天的差值
String imptimeBegin = sdf.format(cal.getTime());
System.out.println("所在周星期一的日期:"+imptimeBegin);
try {
System.out.println(sdf.parse(imptimeBegin));
return sdf.parse(imptimeBegin);
} catch (ParseException e) {
e.printStackTrace();
}
return null;
}
項目中涉及到的日期類的實用方法
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.