Android中本周开始和结束日期的日期为
问题描述:
我需要在Android中开始和结束本周的开始和结束日期。Android中本周开始和结束日期的日期为
例子
today: Oct 12 2011 -> result: Oct 10 2011 - Oct 16 2011
today: Oct 1 2001 -> result: Sep 26 2011 - Oct 2 2011
today: Dec 30 2011 -> result: Dec 24 2001 - Jan 1 2011
使用c.get(Calendar.WEEK_OF_YEAR);
我能得到周数,但如何让开始&末的数据?我在这里找到了一个答案,指向MonthDisplayHelper
但是,如何使用它?
谢谢!
答
使用此sintax和它的工作
Calendar c1 = Calendar.getInstance();
//first day of week
c1.set(Calendar.DAY_OF_WEEK, 1);
int year1 = c1.get(Calendar.YEAR);
int month1 = c1.get(Calendar.MONTH)+1;
int day1 = c1.get(Calendar.DAY_OF_MONTH);
//last day of week
c1.set(Calendar.DAY_OF_WEEK, 7);
int year7 = c1.get(Calendar.YEAR);
int month7 = c1.get(Calendar.MONTH)+1;
int day7 = c1.get(Calendar.DAY_OF_MONTH);
答
这是给你的好榜样,因为它表明你想正确的日期:01 - 07 Jan
8 - 15 Jan
...等...通过按下退按钮&前进按钮相对。
p/s:请根据需要编辑日期格式。
public static String getLastWeek(Calendar mCalendar) {
// Monday
mCalendar.add(Calendar.DAY_OF_YEAR, -13);
Date mDateMonday = mCalendar.getTime();
// Sunday
mCalendar.add(Calendar.DAY_OF_YEAR, 6);
Date mDateSunday = mCalendar.getTime();
// Date format
String strDateFormat = "dd MMM";
SimpleDateFormat sdf = new SimpleDateFormat(strDateFormat);
String MONDAY = sdf.format(mDateMonday);
String SUNDAY = sdf.format(mDateSunday);
// Substring
if ((MONDAY.substring(3, 6)).equals(SUNDAY.substring(3, 6))) {
MONDAY = MONDAY.substring(0, 2);
}
return MONDAY + " - " + SUNDAY;
}
public static String getCurrentWeek(Calendar mCalendar) {
Date date = new Date();
mCalendar.setTime(date);
// 1 = Sunday, 2 = Monday, etc.
int day_of_week = mCalendar.get(Calendar.DAY_OF_WEEK);
int monday_offset;
if (day_of_week == 1) {
monday_offset = -6;
} else
monday_offset = (2 - day_of_week); // need to minus back
mCalendar.add(Calendar.DAY_OF_YEAR, monday_offset);
Date mDateMonday = mCalendar.getTime();
// return 6 the next days of current day (object cal save current day)
mCalendar.add(Calendar.DAY_OF_YEAR, 6);
Date mDateSunday = mCalendar.getTime();
//Get format date
String strDateFormat = "dd MMM";
SimpleDateFormat sdf = new SimpleDateFormat(strDateFormat);
String MONDAY = sdf.format(mDateMonday);
String SUNDAY = sdf.format(mDateSunday);
// Sub String
if ((MONDAY.substring(3, 6)).equals(SUNDAY.substring(3, 6))) {
MONDAY = MONDAY.substring(0, 2);
}
return MONDAY + " - " + SUNDAY;
}
public static String getNextWeek(Calendar mCalendar) {
// Monday
mCalendar.add(Calendar.DAY_OF_YEAR, 1);
Date mDateMonday = mCalendar.getTime();
// Sunday
mCalendar.add(Calendar.DAY_OF_YEAR, 6);
Date Week_Sunday_Date = mCalendar.getTime();
// Date format
String strDateFormat = "dd MMM";
SimpleDateFormat sdf = new SimpleDateFormat(strDateFormat);
String MONDAY = sdf.format(mDateMonday);
String SUNDAY = sdf.format(Week_Sunday_Date);
// Sub string
if ((MONDAY.substring(3, 6)).equals(SUNDAY.substring(3, 6))) {
MONDAY = MONDAY.substring(0, 2);
}
return MONDAY + " - " + SUNDAY;
}
答
这里是很好的示例代码,它给你一年中的当前周以及本周开始和结束日期,只是你需要做的是设置一周的代码开始的第一天,在我来说,我将它设置为SUNDAY,
// get Current Week of the year
calendar=Calendar.getInstance();
Log.v("Current Week", String.valueOf(calendar.get(Calendar.WEEK_OF_YEAR)));
int current_week=calendar.get(Calendar.WEEK_OF_YEAR);
int week_start_day=calendar.getFirstDayOfWeek(); // this will get the starting day os week in integer format i-e 1 if monday
Toast.makeText(getContext(),"Current Week is"+current_week +"Start Day is"+week_start_day,Toast.LENGTH_SHORT).show();
// get the starting and ending date
// Set the calendar to sunday of the current week
calendar.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY);
System.out.println("Current week = " + Calendar.DAY_OF_WEEK);
// Print dates of the current week starting on Sunday
DateFormat df = new SimpleDateFormat("yyyy-MM-dd", Locale.getDefault());
String startDate = "", endDate = "";
startDate = df.format(calendar.getTime());
calendar.add(Calendar.DATE, 6);
endDate = df.format(calendar.getTime());
System.out.println("Start Date = " + startDate);
System.out.println("End Date = " + endDate);
答
按照此代码,这将帮助您找到开始日期和当前星期的最后日期。其工作在我身边。
Calendar calendar = Calendar.getInstance();
Date date1 = calendar.getTime();
SimpleDateFormat checkformate = new SimpleDateFormat("MM/yyyy");
String currentCheckdate = checkformate.format(date1);
int weekn = calendar.get(Calendar.WEEK_OF_MONTH);
int month = calendar.get(Calendar.MONTH);
int year = calendar.get(Calendar.YEAR);
calendar.clear();
calendar.setFirstDayOfWeek(Calendar.MONDAY);
calendar.set(Calendar.WEEK_OF_MONTH, weekn);
calendar.set(Calendar.MONTH, month);
calendar.set(Calendar.YEAR, year);
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
Date datef = calendar.getTime();
Long time = calendar.getTimeInMillis() + 518400000L;
Date dateL = new Date(time);
String firtdate = simpleDateFormat.format(datef);
String lastdate = simpleDateFormat.format(dateL);
String firtdateCheck = checkformate.format(datef);
String lastdateCheck = checkformate.format(dateL);
if (!firtdateCheck.toString().equalsIgnoreCase(currentCheckdate)) {
firtdate = calendar.get(Calendar.YEAR) + "-" + calendar.get(Calendar.MONTH) + "-" + "1";
}
if (!lastdateCheck.toString().equalsIgnoreCase(currentCheckdate)) {
int ma = calendar.getActualMaximum(Calendar.DAY_OF_MONTH);
lastdate = calendar.get(Calendar.YEAR) + "-" + calendar.get(Calendar.MONTH) + "-" + String.valueOf(ma);
}
endDate = lastdate.toString();
startDate = firtdate.toString();
你试过c.set(Calendar.DAY_OF_WEEK,1)吗? – njzk2
工作感谢:) – SimoneB
你能否请详细提及解决方案..我被困在相同的 – AndroidGuy