studio personalizar getinstance android calendar dayofweek days

android - personalizar - Nombre del día en formato de cadena con días para furure



personalizar calendar view android (3)

Necesito el nombre del día en la semana, pero depende de la fecha y fecha actual para el futuro. Por ejemplo, necesito el nombre del día hoy, luego el nombre del día de mañana, el nombre de la fecha +2 días, etc. Escribo este código pero no funciona bien. Entonces, ¿hay alguna forma mejor de cómo puedo obtener el nombre del día en Android?

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; }


En primer lugar, está obteniendo los nombres de los días de una matriz String, pero será mejor si los obtiene de un recurso (strings.xml) para futuros idiomas.

En segundo lugar, debe saber qué tipo de resultado obtiene de calendar.get(Calendar.DAY_OF_WEEK) ; método:

Calendar.SUNDAY = (1) Calendar.MONDAY = (2) Calendar.TUESDAY = (3) Calendar.WEDNESDAY = (4) Calendar.THURSDAY = (5) Calendar.FRIDAY = (6) Calendar.SATURDAY = (7)

Finalmente, su matriz de nombre de día está mal;

new String[] { "SUNDAY","SUNDAY","SUNDAY", "MONDAY", "TUESDAY", "WEDNESDAY", "THURSDAY", "FRIDAY", "SATURDAY" };

Debería ser;

new String[] {"SUNDAY", "MONDAY", "TUESDAY", "WEDNESDAY", "THURSDAY", "FRIDAY", "SATURDAY" };

Y puedes probar los métodos a continuación, solo son un poco modificados tuyos.

/** * * @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; }


Puedes usar directamente

calendar.getDisplayName(Calendar.DAY_OF_WEEK, Calendar.LONG, Locale.US);

donde el calendario se ha configurado usando

calendar.setTime();

Puede establecer el día en el calendario con -

calendar.set(int year, int month, int day);

Espero que ayude


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; } }