2011-08-29 31 views
36

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?

+0

Una búsqueda rápida le ocurrió esta .. http://www.roseindia.net/java/beginners/DayYearToDayMonth.shtml –

Respuesta

68

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.

+1

¿Hay alguna forma de conseguir esto como ¿una cuerda? – yoshi24

+0

Código actualizado para la pregunta de seguimiento – hooked82

2

Tome un vistazo a GregorianCalendar, algo como:

final Calendar now = GregorianCalendar.getInstance() 
final int dayNumber = now.get(Calendar.DAY_OF_MONTH); 
1

Puede comenzar leyendo la documentación de Date. Entonces se da cuenta de que los métodos de Date están obsoletos y pasa al Calender.

Calendar now = Calendar.getInstance(); 
System.out.println(now.get(Calendar.DAY_OF_MONTH)); 
11

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

tl; dr

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. 

java.time

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(); 

Sobre java.time

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?

  • Java SE 8, Java SE 9, y más tarde
    • incorporado.
    • Parte de la API estándar de Java con una implementación integrada.
    • Java 9 agrega algunas características menores y correcciones.
  • Java SE 6 y Java SE 7
    • Gran parte de la funcionalidad de back-java.time está portado a Java 6 & 7 en ThreeTen-Backport.
  • Android
    • Las versiones posteriores de las implementaciones de haces de Android de las clases java.time.
    • Para Android anterior, el proyecto ThreeTenABP se adapta a ThreeTen-Backport (mencionado anteriormente). Ver How to use ThreeTenABP….

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.


Joda-Time

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.

-2
//This will get you the day of the month 
String.valueOf((Calendar.getInstance()).get(Calendar.DAY_OF_MONTH)) 
+0

Edite con más información. Se desalientan las respuestas de solo código y "prueba esto", ya que no contienen contenido que se pueda buscar y no explican por qué alguien debe "probar esto". – abarisone

+0

Explique para que uno tenga más idea sobre lo que está haciendo su código. – cammando

0

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.

enter image description here

puede probar diferentes número de patrones para ver cómo será la salida.

ver más sobre Java 8 DateTime API here

Cuestiones relacionadas