import java.util.Calendar;
import java.util.Locale;
public class CalSample {
private static final int TODAY = 0;
private static final int TOMORROW = 1;
private static final int DAY_AFTER_TOMORROW = 2;
private static final int THREE_DAYS_FROM_TODAY = 3;
private static final int FOUR_DAYS_FROM_TODAY = 4;
private static final int FIVE_DAYS_FROM_TODAY = 5;
private static final int SIX_DAYS_FROM_TODAY = 6;
public static void main(String args[]){
CalSample calSample = new CalSample();
calSample.getNameOfDayOfWeek(TODAY);
calSample.getNameOfDayOfWeek(TOMORROW);
calSample.getNameOfDayOfWeek(DAY_AFTER_TOMORROW);
calSample.getNameOfDayOfWeek(THREE_DAYS_FROM_TODAY);
calSample.getNameOfDayOfWeek(FOUR_DAYS_FROM_TODAY);
calSample.getNameOfDayOfWeek(SIX_DAYS_FROM_TODAY);
}
public String getNameOfDayOfWeek(int noOfDaysFromToday){
Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.DAY_OF_YEAR, noOfDaysFromToday);
String name = calendar.getDisplayName(Calendar.DAY_OF_WEEK, Calendar.LONG, Locale.ENGLISH);
System.out.println("Day Of Week:- " + name);
return name;
}
}
Name of day in string format with days to furure
题
I need name of day in week but dependent o actual date and date to future. For example I need name of day today, then name of day tomorrow, name of date +2 days etc I make this code but not working good. So is there any better way how I can in android get name of day?
public String getDay3Name() {
Calendar calendar = Calendar.getInstance();
calendar.setTime(new Date());
String[] days = new String[] { "SUNDAY","SUNDAY","SUNDAY", "MONDAY", "TUESDAY", "WEDNESDAY", "THURSDAY", "FRIDAY", "SATURDAY" };
String day = days[calendar.get(Calendar.DAY_OF_WEEK)+1];
return day;
}
public String getDay4Name() {
Calendar calendar = Calendar.getInstance();
calendar.setTime(new Date());
String[] days = new String[] { "SUNDAY","SUNDAY","SUNDAY", "MONDAY", "TUESDAY", "WEDNESDAY", "THURSDAY", "FRIDAY", "SATURDAY" };
String day = days[calendar.get(Calendar.DAY_OF_WEEK)+2];
return day;
}
解决方案
其他提示
You can directly use
calendar.getDisplayName(Calendar.DAY_OF_WEEK, Calendar.LONG, Locale.US);
where calendar has been set using
calendar.setTime();
You can set the day in calendar with -
calendar.set(int year, int month, int day);
Hope that helps
Firstly, you are doing well with getting day names from a String array, but it will be better if you get them from a resource(strings.xml) for future multiple language support.
Secondly you should know what kind of result that you are getting from calendar.get(Calendar.DAY_OF_WEEK)
; method:
Calendar.SUNDAY = (1)
Calendar.MONDAY = (2)
Calendar.TUESDAY = (3)
Calendar.WEDNESDAY = (4)
Calendar.THURSDAY = (5)
Calendar.FRIDAY = (6)
Calendar.SATURDAY = (7)
Finally, your day name array is wrong;
new String[] { "SUNDAY","SUNDAY","SUNDAY", "MONDAY", "TUESDAY", "WEDNESDAY", "THURSDAY", "FRIDAY", "SATURDAY" };
It should be;
new String[] {"SUNDAY", "MONDAY", "TUESDAY", "WEDNESDAY", "THURSDAY", "FRIDAY", "SATURDAY" };
And you can try methods below, they are just a little bit modified of yours.
/**
*
* @param next
* @return
*
* send next 0 if you want to get current day name
*/
public String getDayName(int next) {
int dayIndex = getCurrentDayIndex() - 1;
dayIndex += next;
dayIndex = dayIndex % 7;
String[] days = new String[] {"SUNDAY", "MONDAY", "TUESDAY", "WEDNESDAY", "THURSDAY", "FRIDAY", "SATURDAY" };
String day = days[dayIndex];
return day;
}
/**
*
* @return 1,2,3,4,5,6 or 7
*/
public int getCurrentDayIndex() {
Calendar calendar = Calendar.getInstance();
calendar.setTime(new Date());
int dayIndex = calendar.get(Calendar.DAY_OF_WEEK);
return dayIndex;
}