[英]how to get next and previous week date in android
public String getCurrentWeekDate() {
Calendar c = GregorianCalendar.getInstance();
System.out.println("Current week = " + Calendar.DAY_OF_WEEK);
c.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);
System.out.println("Current week = " + Calendar.DAY_OF_WEEK);
DateFormat df = new SimpleDateFormat("yyyy-MM-dd", Locale.getDefault());
String startDate = "", endDate = "";
startDate = df.format(c.getTime());
c.add(Calendar.DATE, 6);
endDate = df.format(c.getTime());
System.out.println("Start Date = " + startDate);
System.out.println("End Date = " + endDate);
return "";
}
這是我的代碼,我從中獲取給定時間格式的當前星期日期,例如 2017-07-17 到 2017-07-23 。
if (v.getId() == R.id.previousButtonView) {
getCurrentWeekDate();
} else if (v.getId() == R.id.nextButtonView) {
getCurrentWeekDate();
}
這是我的代碼,我必須從中顯示下周和前一周的日期,請建議我如何增加和減少周日期,我是 android 新手。
下周calendar.add(Calendar.DAY_OF_WEEK, 1);
對於前一周calendar.add(Calendar.DAY_OF_WEEK, -1);
public void getCurrentWeekDate(int week) {
Calendar c = GregorianCalendar.getInstance();
c.setFirstDayOfWeek(Calendar.MONDAY);
c.set(Calendar.DAY_OF_WEEK, c.getFirstDayOfWeek());
c.add(Calendar.DAY_OF_WEEK, week);
DateFormat df = new SimpleDateFormat("yyyy-MM-dd", Locale.getDefault());
String startDate;
String endDate;
startDate = df.format(c.getTime());
c.add(Calendar.DAY_OF_MONTH, 6);
endDate = df.format(c.getTime());
System.out.println("Start Date = " + startDate);
System.out.println("End Date = " + endDate);
}
如果您想要前一周的開始和結束日期,請將 currentWeekNumber減 1
否則,如果您希望下周開始和結束日期將 currentWeekNumber增加 1
//initialize Calendar
Calendar c = Calendar.getInstance();
//get current week number
int currentWeekNumber = c.get(Calendar.WEEK_OF_YEAR);
//decrement week number by 1 for the previous week
c.set(Calendar.WEEK_OF_YEAR, currentWeekNumber - 1);
//increment week number by 1 for the next week
//c.set(Calendar.WEEK_OF_YEAR, currentWeekNumber + 1);
//set first day of week
c.set(Calendar.DAY_OF_WEEK, 1);
//get start date of previous week
DateFormat df = new SimpleDateFormat("yyyy-MM-dd", Locale.getDefault());
String startDate = df.format(c.getTime());
//set last day of week
c.set(Calendar.DAY_OF_WEEK, 7);
//get end date of previous week
String endDate = df.format(c.getTime());
Log.d("LOG_TAG", "Start Date = " + startDate);
Log.d("LOG_TAG", "End Date = " + endDate);
由於您已經找到了當前周的日期,您所要做的就是將前一周的日期減去 7 天,並為下一周的日期加上 7 天。
您可以通過以下代碼做到這一點
int x = -7;
Calendar cal = GregorianCalendar.getInstance();
cal.add( Calendar.DAY_OF_YEAR, x);
Date sevenDaysAgo = cal.getTime();
所以你的代碼將如下所示 -
public void getCurrentWeekDate(int week) {
Calendar c = GregorianCalendar.getInstance();
System.out.println("Current week = " + Calendar.DAY_OF_WEEK);
c.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);
System.out.println("Current week = " + Calendar.DAY_OF_WEEK);
DateFormat df = new SimpleDateFormat("yyyy-MM-dd", Locale.getDefault());
String startDate;
String endDate;
startDate = df.format(c.getTime());
// previous week calculation
Calendar previousWeekCalendar = c;
previousWeekCalendar.add( Calendar.DAY_OF_YEAR, -7);
startPreviousWeekDate = df.format(previousWeekCalendar.getTime());
previousWeekCalendar.add(Calendar.DATE, 6);
endPreviousWeekDate = df.format(previousWeekCalendar.getTime());
c.add(Calendar.DATE, 6);
//for previous week
//c.add(Calendar.DAY_OF_WEEK, -1);
//for next week
c.add(Calendar.DAY_OF_WEEK, week);
endDate = df.format(c.getTime());
// Do next week calculation same as previous week. Just check what is the value of c before starting the calculation
System.out.println("Start Date = " + startDate);
System.out.println("End Date = " + endDate);
System.out.println("End Date = " + endDate);
}
這么多嘗試我得到了這個結果:
fun getWeekDates(currentWeek: Int): Array<String?> {
val daysOfWeek = arrayOfNulls<String>(7)
val calendar = Calendar.getInstance()
calendar.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY)
calendar.set(Calendar.WEEK_OF_MONTH, currentWeek)
for (i in 0..6) {
daysOfWeek[i] = changeDateFormat(LocalDate(calendar.time))
calendar.add(Calendar.DAY_OF_MONTH, 1)
}
return daysOfWeek
}
private val calendar = Calendar.getInstance()
fun getLastWeekRange(): String {
val calendarFrom = Calendar.getInstance()
val calendarTo = Calendar.getInstance()
val dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK)
val fotmat = SimpleDateFormat("dd.MM.yyyy")
if (dayOfWeek == 1) {
calendarFrom.add(Calendar.DATE, -(dayOfWeek + 12))
calendarTo.add(Calendar.DATE, -(dayOfWeek + 6))
} else {
calendarFrom.add(Calendar.DATE, -(dayOfWeek + 5))
calendarTo.add(Calendar.DATE, -(dayOfWeek - 1))
}
return "[${fotmat.format(calendarFrom.time)} - ${fotmat.format(calendarTo.time)}]"
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.