如何獲取星期的第一個和最後一個日期如何根據月份和年份在android 中獲取星期幾的最後幾個日期例如:我們通過月份和年份(2016年3月)然後我想所有星期就像 mar5- mar11,(坐至週五) mar12- mar18, mar19- mar25, mar26-april01如何根據月份和年份在android
請幫我
如何獲取星期的第一個和最後一個日期如何根據月份和年份在android 中獲取星期幾的最後幾個日期例如:我們通過月份和年份(2016年3月)然後我想所有星期就像 mar5- mar11,(坐至週五) mar12- mar18, mar19- mar25, mar26-april01如何根據月份和年份在android
請幫我
如果您正在使用的java.util。你可以使用方法getDay()的日期。它返回Calendar常量,如Calendar.MONDAY。
你可以把這個字符串作爲02,2016
List<String> getWeekendsOftheMonth(String monthYearString) {
long monthDate;
List<String> weekEnds = new ArrayList<>();
SimpleDateFormat simpleDateFormat= new SimpleDateFormat("dd,MM,yyyy");
try {
monthYearString="01,".concat(monthYearString);
monthDate = simpleDateFormat.parse(monthYearString).getTime();
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(monthDate);
int maxDate = calendar.getActualMaximum(Calendar.DATE);
int minDate = calendar.getActualMinimum(Calendar.DATE);
for (int i = minDate; i <= maxDate; i++) {
calendar.set(Calendar.DATE, i);
if (calendar.get(Calendar.DAY_OF_WEEK) == Calendar.FRIDAY|| calendar.get(Calendar.DAY_OF_WEEK) == Calendar.SATURDAY) {
weekEnds.add(convertToDate(calendar.getTimeInMillis()));
}
}
}catch (Exception e){
e.printStackTrace();
}
return weekEnds;
}
String convertToDate(Long datetime) {
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("dd MMM. yyyy");
Date date = new Date(datetime);
return simpleDateFormat.format(date);
}
你可以從這個方法去做。
調用此函數可獲得一年中給定月份的有效周對列表中的結果。
例如:getWeekStartEnd("December","2016");
結果:[ December3-December9, December10-December16, December17-December23, December24-December30 ]
List<String> getWeekStartEnd (String month , String year) {
List<String> validWeekPairs = new ArrayList<>();
SimpleDateFormat sdf = new SimpleDateFormat("dd-MMMMM-yyyy");
String day = "01";
try {
Date date = sdf.parse(day + "-" + month + "-" + year);
Calendar calendar = Calendar.getInstance();
calendar.clear();
calendar.setTime(date);
calendar.setFirstDayOfWeek(Calendar.SATURDAY);
List<String> startDayOfWeek = new ArrayList<>();
List<String> endDayOfWeek = new ArrayList<>();
int daysInMonth = calendar.getActualMaximum(Calendar.DAY_OF_MONTH);
boolean isStartDaySet = false;
boolean hasLastDayOfWeek = true;
for (int currentDay = 01; currentDay <= daysInMonth; currentDay++) {
Date newDate = sdf.parse(currentDay + "-" + month + "-" + year);
calendar.setTime(newDate);
int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK);
if (dayOfWeek == Calendar.SATURDAY) {
if (hasLastDayOfWeek) {
startDayOfWeek.add(month + String.valueOf(currentDay));
isStartDaySet = true;
hasLastDayOfWeek = false;
}
} else if (dayOfWeek == Calendar.FRIDAY) {
if (isStartDaySet) {
endDayOfWeek.add(month + String.valueOf(currentDay));
hasLastDayOfWeek = true;
}
}
}
for (int i = 0; i < endDayOfWeek.size(); i++) {
validWeekPairs.add(startDayOfWeek.get(i) + "-" + endDayOfWeek.get(i));
}
return validWeekPairs;
} catch (ParseException e) {
e.printStackTrace();
return validWeekPairs;
}catch (Exception e){
e.printStackTrace();
return validWeekPairs;
}
}
,是的,這是實際的解決方案兄弟...它的工作對我來說。謝謝你。 –
不客氣!你能否將我的答案標記爲已接受的答案並註冊? :) –
是的,但我的名聲更低。 –
看看'Calendar' –
更新我的回答 – Noorul
@Ahamed我需要一個像getWeekendsOftheMonth(2,2016)的一些事情二月2016 –