Estoy tratando de recuperar qué día del mes es.¿Cómo obtener el día del mes?
Como hoy es agosto 29,2011.
Lo que me gustaría hacer es obtener el número de días como 29, o 30. Cuál es el día del mes que sea.
¿Cómo voy a hacer esto?
Estoy tratando de recuperar qué día del mes es.¿Cómo obtener el día del mes?
Como hoy es agosto 29,2011.
Lo que me gustaría hacer es obtener el número de días como 29, o 30. Cuál es el día del mes que sea.
¿Cómo voy a hacer esto?
Usted querrá hacer obtener una instancia de Calendar y obtener su 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.
Tome un vistazo a GregorianCalendar
, algo como:
final Calendar now = GregorianCalendar.getInstance()
final int dayNumber = now.get(Calendar.DAY_OF_MONTH);
El siguiente método que podría ayudar en la búsqueda de cualquier día de la fecha especificada:
public static int getDayOfMonth(Date aDate) {
Calendar cal = Calendar.getInstance();
cal.setTime(aDate);
return cal.get(Calendar.DAY_OF_MONTH);
}
LocalDate.now().getDayOfMonth() // Better to pass a `ZoneId` optional argument to `now` as shown below than rely implicitly on the JVM’s current default time zone.
El enfoque moderno es el LocalDate
clase para representar un valor de solo la fecha.
Una zona horaria es crucial para determinar la fecha actual. Para cualquier momento dado, la fecha varía alrededor del mundo por 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();
El marco java.time está incorporado en Java 8 y versiones posteriores. Estas clases suplantan a las viejas y problemáticas clases de fecha y hora de legacy, como java.util.Date
, Calendar
, & SimpleDateFormat
.
El proyecto Joda-Time, ahora en maintenance mode, recomienda la migración a las clases java.time.
Para obtener más información, consulte el Oracle Tutorial. Y busque Stack Overflow para obtener muchos ejemplos y explicaciones. La especificación es JSR 310.
El uso de un JDBC driver compatible con JDBC 4.2 o temprano, es posible intercambiar java.time objetos directamente con su base de datos. No necesita cadenas ni clases java.sql. *.
¿Dónde obtener las clases java.time?
El proyecto se extiende ThreeTen-Extra java.time con clases adicionales. Este proyecto es un terreno de prueba para posibles adiciones futuras a java.time. Puede encontrar algunas clases útiles aquí, como Interval
, YearWeek
, YearQuarter
y more.
ACTUALIZACIÓN: El proyecto Joda-Time se encuentra ahora en modo de mantenimiento, y aconseja a la migración a las clases java.time. Esta sección quedó intacta para la historia.
Utilizando la biblioteca Joda-Time 2.5 en lugar de las notoriamente problemáticas clases java.util.Date y .Calendar.
La zona horaria es crucial para determinar una fecha. Es mejor especificar la zona en lugar de confiar implícitamente en la zona horaria predeterminada actual de la JVM que se está asignando.
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 parte de hora del día.
//This will get you the day of the month
String.valueOf((Calendar.getInstance()).get(Calendar.DAY_OF_MONTH))
Java 8 Actualización
Java 8 introduce los siguientes paquetes para el tiempo y la manipulación de la fecha.
java.time.*;
java.time.format.*;
java.time.chono.*;
java.time.temporal.*;
java.time.zone.*;
Estos son más organizados e intuitivos.
Solo necesitamos los dos mejores paquetes para la discusión.
Hay 3 clases de nivel superior: LocalDate
, LocalTime
, LocalDateTime
para describir Fecha, Hora y Fecha y hora, respectivamente. Aunque están formateados correctamente en toString()
, cada clase tiene un método de formato que acepta DateTimeFormatter
para formatear de forma personalizada.
DateTimeFormatter
también se pueden utilizar para mostrar la fecha dada por 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 patrones restringidos de longitud restringida. Aquí están los caracteres que se pueden pasar al método toPattern
.
puede probar diferentes número de patrones para ver cómo será la salida.
ver más sobre Java 8 DateTime API here
Una búsqueda rápida le ocurrió esta .. http://www.roseindia.net/java/beginners/DayYearToDayMonth.shtml –