¿Cómo conseguir el día del mes?
Estoy tratando de recuperar qué día del mes es.
Tal como hoy es el 29 de agosto de 2011.
- Cómo probar la unidad android y burlarse de un método estático
- Cargar un archivo de 16KB en Android tarda 35 segundos?
- La entrada de recursos com.crashlytics.android.build_id ya está definida
- Android Tests: Stubbing Out Retrofit con Mockito
- ¿Es posible cambiar el color del texto en una cadena a varios colores en Java?
Lo que me gustaría hacer es obtener el número de días como 29 o 30. Que día del mes que es.
¿Cómo iba a hacer esto?
- Comunicación de Android entre Actividades sin onActivityResult
- Cómo importar com.android.internal.telephony.ITelephony a la aplicación de Android
- Inhabilitar la visualización de la ventana de ejecución en IntelliJ
- Uso de la biblioteca Joda-Time para convertir la cadena al formato DateTime en Google Tasks API
- Cómo convertir un gif en un fondo de pantalla en vivo para su uso en la aplicación para Android
- Realm: Iterando un RealmObject y borrando un campo ArrayList
- excepción java.lang.NoClassDefFoundError en algunos dispositivos
- ¿Cómo encontrar todos los archivos con cierta extensión en Android?
Tendrás que obtener una instancia de Calendar y conseguir que sea el día del mes
Calendar cal = Calendar.getInstance(); int dayOfMonth = cal.get(Calendar.DAY_OF_MONTH); String dayOfMonthStr = String.valueOf(dayOfMonth);
También puede obtener DAY_OF_WEEK, DAY_OF_YEAR, DAY_OF_WEEK_IN_MONTH, etc.
El siguiente método le ayudaría a encontrar el día de cualquier fecha especificada:
public static int getDayOfMonth(Date aDate) { Calendar cal = Calendar.getInstance(); cal.setTime(aDate); return cal.get(Calendar.DAY_OF_MONTH); }
Echa un vistazo a GregorianCalendar
, algo así como:
final Calendar now = GregorianCalendar.getInstance() final int dayNumber = now.get(Calendar.DAY_OF_MONTH);
Usted puede empezar leyendo la documentación de la Fecha . Entonces te das cuenta de que los métodos de Date están todos obsoletos y luego a Calender .
Calendar now = Calendar.getInstance(); System.out.println(now.get(Calendar.DAY_OF_MONTH));
Tl dr
LocalDate.now( ZoneId.of( "America/Montreal" ) ).getDayOfMonth()
Java.time
El enfoque moderno es la clase LocalDate
para representar un valor de fecha solamente.
Una zona horaria es crucial para determinar la fecha actual. Para cualquier momento dado, la fecha varía alrededor del globo por la zona.
ZoneId z = ZoneId.of( "America/Montreal" ); LocalDate ld = LocalDate.now( z ) ; int dayOfMonth = ld.getDayOfMonth();
También puede obtener el día de la semana.
DayOfWeek dow = ld.getDayOfWeek();
Joda-Time
ACTUALIZACIÓN: El proyecto Joda-Time está ahora en modo de mantenimiento y recomienda la migración a las clases java.time.
Utilizar la biblioteca Joda-Time 2.5 en lugar de las clases java.util.Date y .Calendar, que son notoriamente problemáticas.
La zona horaria es crucial para determinar una fecha. Es mejor especificar la zona en lugar de depender implícitamente de la zona horaria predeterminada actual de la JVM que está siendo asignada.
DateTimeZone zone = DateTimeZone.forID( "America/Montreal" ); DateTime now = DateTime.now( zone ).withTimeAtStartOfDay(); int dayOfMonth = now.getDayOfMonth();
O utilizar código similar con la clase LocalDate
que no tiene ninguna porción de hora del día.
Actualización de Java 8
Java 8 introduce los siguientes paquetes para la manipulación de hora y fecha.
java.time.*; java.time.format.*; java.time.chono.*; java.time.temporal.*; java.time.zone.*;
Estos son más organizados e intuitivos.
Sólo necesitamos dos paquetes más importantes para la discusión.
Hay 3 clases de nivel superior: LocalDate
, LocalTime
, LocalDateTime
para describir Date, Time y DateTime respectivamente. Aunque, se formatean correctamente en toString()
, cada clase tiene método de formato que acepta DateTimeFormatter
para formatear en forma personalizada.
DateTimeFormatter
también se puede utilizar mostrar la fecha dada un día. Tiene pocos
import java.time.*; import java.time.format.*; class DateTimeDemo{ public static void main(String...args){ LocalDateTime x = LocalDateTime.now(); System.out.println(x.format(DateTimeFormatter.ofLocalizedDate(FormatStyle.FULL)));//Shows Day and Date. System.out.println(x.format(DateTimeFormatter.ofPattern("EE")));//Short Form System.out.println(x.format(DateTimeFormatter.ofPattern("EEEE")));//Long Form } }
ofLocalizedTime
acepta FormatStyle
que es una enumeración en java.time.format
ofPattern
acepta String
con caracteres de patrón restringido de longitud restringida. Aquí están los caracteres que se pueden pasar al método toPattern
.
Puede probar diferentes números de patrones para ver cómo será la salida.
Echa un vistazo a más información sobre Java 8 DateTime API aquí
//This will get you the day of the month String.valueOf((Calendar.getInstance()).get(Calendar.DAY_OF_MONTH))
- ¿Cómo puedo detectar el tiempo de ejecución de Android (Dalvik o ART)?
- Cómo capturar el error "No se puede reproducir este video" en VideoView