Saltar al contenido

Java – Obtener array del nombre del día de la semana actual

Este equipo especializado luego de algunos días de trabajo y de juntar de datos, obtuvimos la solución, queremos que te sea útil en tu trabajo.

Solución:

Una función de uso para usted aquí es la módulo (%) operador.

Básicamente, lo que hace el operador módulo es tomar el resto de la división, que es exactamente lo que quieres. (¿Recuerdas en cuarto grado cuando “9 / 2” no era 4.5, sino 4 resto 1? Esta es la parte restante).

Así que en lugar de tener:

days[currentDay + x]

Usar:

days[(currentDay + x) % 7]

Ejemplo rápido de valores devueltos por el operador de módulo:

 0 % 7 = 0   (0 / 7 = 0 R0)
 1 % 7 = 1   (1 / 7 = 0 R1)
 6 % 7 = 6   (6 / 7 = 0 R6)
 7 % 7 = 0   (7 / 7 = 1 R0)
 8 % 7 = 1   (8 / 7 = 1 R1)
15 % 7 = 1   (15 / 7 = 2 R1)

tl; dr

LocalDate.now( ZoneId.of( "Pacific/Auckland" ) )
         .plusDays( 5 )
         .getDayOfWeek()
         .getDisplayName( TextStyle.FULL , Locale.US )

Detalles

Saca de tu mente la idea de array índice relativo al día de la semana.

Además, generalmente es mejor usar un objeto de colección moderno para reunir sus objetos en lugar de un mero array.

Además, evita los molestos Calendar clase. Ahora suplantado por las clases java.time.

Primero obtenga la fecha actual. Él LocalDate class representa un valor de solo fecha sin hora del día y sin zona horaria.

Una zona horaria es crucial para determinar una fecha. Para cualquier momento dado, la fecha varía en todo el mundo por zona. Por ejemplo, unos minutos después de la medianoche en París Francia es un nuevo día, mientras que en Montreal Québec todavía es “ayer”.

Especifique un nombre de zona horaria adecuado en el formato de continent/regioncomo America/Montreal, Africa/Casablancao Pacific/Auckland. Nunca use la abreviatura de 3-4 letras como EST o IST ya que son no true zonas horarias, no estandarizadas y ni siquiera únicas (!).

ZoneId z = ZoneId.of( "America/Montreal" );
LocalDate today = LocalDate.now( z );

Sabemos que el resultado de ayer es yesterday así que no hay necesidad de calcular esa fecha. Si necesita la fecha, llame LocalDate::minusDays.

Podemos preguntar a cada uno LocalDate para el nombre de su día extrayendo un DayOfWeek objeto de enumeración. Ese DayOfWeek saber su propio nombre en cualquier idioma humano que se puede especificar a través de un Locale objeto. Por lo tanto, no es necesario que realice un seguimiento de un array de cadenas de nombre de día de plantilla. Sugerencia: en OOP, intente pensar en (a) dejar que los objetos sean inteligentes y se cuiden solos, o (b) solicitar la ayuda de un objeto auxiliar, en lugar de usar arreglos básicos para hacer todo el trabajo usted mismo.

List dayNames = new ArrayList<>( 7 ) ;  // Initialize to seven days of a week.
dayNames.add( "yesterday" ) ;
dayNames.add( "today" ) ;
for( int i = 1 ; i <= 5 ; i ++ ) 
    LocalDate ld = today.plusDays( i ) ;
    String dayName = ld.getDayOfWeek().getDisplayName( TextStyle.FULL , Locale.US ) ;
    dayNames.add( dayName ) ;  // Add each of the five days remaining in a week.

Prueba este código en vivo en IdeOne.com.

[yesterday, today, Tuesday, Wednesday, Thursday, Friday, Saturday]


Acerca de java.time

El marco java.time está integrado en Java 8 y versiones posteriores. Estas clases reemplazan a las antiguas y problemáticas clases heredadas de fecha y hora, como java.util.Date, Calendar& SimpleDateFormat.

El proyecto Joda-Time, ahora en modo de mantenimiento, aconseja la migración a las clases java.time.

Para obtener más información, consulte el Tutorial de Oracle. Y busque Stack Overflow para obtener muchos ejemplos y explicaciones. La especificación es JSR 310.

¿Dónde obtener las clases java.time?

  • Java SE 8, Java SE 9y después
    • Incorporado.
    • Parte de la API de Java estándar con una implementación integrada.
    • Java 9 agrega algunas características y correcciones menores.
  • Java SE 6 y Java SE 7
    • Gran parte de la funcionalidad de java.time está adaptada a Java 6 y 7 en ThreeTen-Backport.
  • Androide
    • Él TresDiezABP el proyecto se adapta ThreeTen-Backport (mencionado anteriormente) para Android específicamente.
    • Ver Cómo usar ThreeTenABP….

Él ThreeTen-Extra proyecto extiende java.time con clases adicionales. Este proyecto es un campo de pruebas para posibles adiciones futuras a java.time. Puede encontrar algunas clases útiles aquí, como Interval, YearWeek, YearQuartery más.

Si te mola la invitación, eres capaz de dejar una crónica acerca de qué te ha impresionado de esta noticia.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *