Por ejemplo, tengo la fecha: "23/2/2010" (23 de febrero de 2010). Quiero pasarlo a una función que devolvería el día de la semana . ¿Cómo puedo hacer esto?
En este ejemplo, la función debería devolver String
"Tue".
Además, si solo se desea el día ordinal, ¿cómo se puede recuperar?
Calendar
clase, comoCalendar.SUNDAY
oCalendar.JANUARY
.Calendar
,Date
yDateTimeFormat
(y el tiempo de Joda también) y usar lasjava.time
clases de Java 8 , por ejemploYearMonth
oLocalDate
. Ver más en esta respuesta .java.util.Date
,java.util.Calendar
yjava.text.SimpleDateFormat
ahora son heredadas , suplantadas por las clases java.time integradas en Java 8 y Java 9. Consulte el Tutorial de Oracle .Use este código para encontrar el nombre del día desde una fecha de entrada. Simple y bien probado.
fuente
java.util.Date
,java.util.Calendar
yjava.text.SimpleDateFormat
ahora son heredadas , suplantadas por las clases java.time integradas en Java 8 y Java 9. Consulte el Tutorial de Oracle .Simplemente use SimpleDateFormat .
El resultado es: sáb, 28 dic 2013
El constructor predeterminado está tomando la configuración regional "predeterminada" , así que tenga cuidado al usarla cuando necesite un patrón específico.
fuente
tl; dr
Usando java.time ...
Vea este código en vivo en IdeOne.com (pero solo
Locale.US
funciona allí).java.time
Vea mi código de ejemplo anterior y vea la respuesta correcta para java.time de Przemek .
Número ordinal
Para el número ordinal, considere la posibilidad de pasar alrededor del
DayOfWeek
objeto enumeración lugar comoDayOfWeek.TUESDAY
. Tenga en cuenta que aDayOfWeek
es un objeto inteligente, no solo una cadena o un mero número entero. El uso de esos objetos de enumeración hace que su código sea más autodocumentado, garantiza valores válidos y proporciona seguridad de escritura .Pero si insiste, solicite
DayOfWeek
un número . Obtiene 1-7 de lunes a domingo según el estándar ISO 8601 .Joda-Time
ACTUALIZACIÓN: El proyecto Joda-Time ahora está en modo de mantenimiento. El equipo aconseja migrar a las clases java.time. El framework java.time está integrado en Java 8 (así como portado a Java 6 y 7 y adaptado a Android ).
Aquí hay un código de ejemplo que usa la versión 2.4 de la biblioteca Joda-Time , como se menciona en la respuesta aceptada por Bozho . Joda-Time es muy superior a las clases java.util.Date/.Calendar incluidas en Java.
LocalDate
Joda-Time ofrece la
LocalDate
clase para representar una fecha solamente sin ninguna hora del día o zona horaria. Justo lo que esta pregunta requiere. Las antiguas clases java.util.Date/.Calendar incluidas con Java carecen de este concepto.Analizar gramaticalmente
Analiza la cadena en un valor de fecha.
Extraer
Extraiga del valor de la fecha el número y el nombre del día de la semana.
Tugurio
Volcado a la consola.
correr
Cuando corre
Sobre java.time
El marco java.time está integrado en Java 8 y versiones posteriores. Estas clases suplantar la vieja problemáticos heredados clases de fecha y hora como
java.util.Date
,Calendar
, ySimpleDateFormat
.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?
El proyecto ThreeTen-Extra extiende java.time con clases adicionales. Este proyecto es un campo de pruebas para posibles adiciones futuras a java.time. Usted puede encontrar algunas clases útiles aquí, como
Interval
,YearWeek
,YearQuarter
, y más .fuente
java.time
Usando el
java.time
framework integrado en Java 8 y posterior.La enumeración puede generar una Cadena del nombre del día localizada automáticamente en el lenguaje humano y las normas culturales de a . Especifique a para indicar que desea una forma larga o un nombre abreviado.
DayOfWeek
Locale
TextStyle
fuente
Puedes probar el siguiente código:
fuente
LocalDate
? ¿Lo leíste antes de publicar?fuente
Para Java 8 o posterior , es preferible Localdate
Nota: si la entrada está definida por String / User, debe analizarla en int .
fuente
fuente
Otra forma "divertida" es usar el algoritmo Doomsday . Es un método mucho más largo, pero también es más rápido si no necesita crear un objeto Calendario con una fecha determinada.
fuente
Puede usar el siguiente fragmento de código para entradas como (día = "08", mes = "05", año = "2015" y la salida será "MIÉRCOLES")
fuente
Respuesta de una línea:
Ejemplo de uso:
fuente
fuente
fuente
Hay un desafío en hackerrank Java Date and Time
personalmente, prefiero la clase LocalDate.
Hay un video sobre este desafío.
Solución Java Hackerrank de fecha y hora
Espero que ayude :)
fuente
Calendar
clase, por favor nota que elset
método en el Calendario lleva meses a partir de 0. es decir,0 for January
. ¡Gracias!Agregando otra forma de hacerlo exactamente lo que solicitó el OP, sin usar los últimos métodos incorporados:
fuente
SimpleDateFormat
y desactualizadas y mal diseñadasDate
. En particular, no debe usar elgetDay
método obsoleto , no es confiable. Y no debe usarif
:else
para seleccionar entre 7 valores, esto es para lo que tenemosswitch
, o puede usar una matriz. En general, su código es más largo y más complicado de lo necesario.fuente
Programa para encontrar el día de la semana dando la fecha de entrada del usuario mes y año usando el
java.util.scanner
paquete:fuente
java.util.Date
,java.util.Calendar
yjava.text.SimpleDateFormat
ahora son heredadas , suplantadas por las clases java.time integradas en Java 8 y Java 9. Consulte el Tutorial de Oracle .if ((ym%4==0) && (gm==2)){ d=(gd+m[gm-1]+ym+yp+y[a]-1)%7;
Obtenga el valor del día proporcionando la marca de tiempo actual.
fuente
fuente
Sin embargo, el método a continuación recupera siete días y devuelve el nombre corto de días en List Array en Kotlin, puede volver a formatear y luego en formato Java, simplemente presentando la idea de cómo Calendar puede devolver el nombre corto
poner resultados como
fuente
Calendar
clase en 2019. Está mal diseñada y está desactualizada. En cambio, recomiendoLocalDate
yDayOfWeek
de java.time, la API moderna de fecha y hora de Java .Puede usar el siguiente método para obtener el Día de la semana pasando una fecha específica,
Aquí, para el método establecido de la clase Calendario, la parte difícil es que el índice del parámetro del mes comenzará desde 0 .
fuente
La clase de calendario tiene una funcionalidad incorporada de displayName:
Disponible desde Java 1.6. Consulte también la documentación de Oracle
fuente
Esto funciona correctamente ...
Proporciona el método incorporado getDayOfWeek () para obtener el día de una semana en particular:
Para asignar el valor de enum
l.getDayOfWeek()
a una cadena, probablemente podría usar el método de Enum llamadoname()
que devuelve el valor del objeto enum.fuente
listHolidays.add(LocalDate.of(year, 1, 1));
a la respuesta. Si desea mejorar la respuesta, debe agregar la suya. Espero que ayudeA continuación se muestran las dos líneas de fragmentos que utilizan la API Java 1.8 Time para su Requisito.
fuente