Cómo conseguir mes a partir de la fecha en java :

        DateFormat inputDF  = new SimpleDateFormat("mm/dd/yy");
        Date date1 = inputDF.parse("9/30/11");

        Calendar cal = Calendar.getInstance();
        cal.setTime(date1);

        int month = cal.get(Calendar.MONTH);
        int day = cal.get(Calendar.DAY_OF_MONTH);
        int year = cal.get(Calendar.YEAR);

        System.out.println(month+" - "+day+" - "+year);

Este código de retorno el día y el año, pero no mes.

de salida :

0 - 30 - 2011
FYI: Estas molesto fecha antigua clases de tiempo visto en la Pregunta ahora legado, suplantado por el java.tiempo clases construido en Java 8 y versiones posteriores. ZonedDateTime.now().getMonthValue()

OriginalEl autor bigData | 2013-09-26

7 Comentarios

  1. 17

    Esto es debido a que su formato es incorrecto: no se necesita "MM/dd/yy" al mes, porque "mm" es para minutos:

    DateFormat inputDF  = new SimpleDateFormat("MM/dd/yy");
    Date date1 = inputDF.parse("9/30/11");
    
    Calendar cal = Calendar.getInstance();
    cal.setTime(date1);
    
    int month = cal.get(Calendar.MONTH);
    int day = cal.get(Calendar.DAY_OF_MONTH);
    int year = cal.get(Calendar.YEAR);
    
    System.out.println(month+" - "+day+" - "+year);

    Imprime 8 - 30 - 2011 (debido a que son los meses de base cero; demo)

    OriginalEl autor dasblinkenlight

  2. 5

    Primero, se utiliza mm en su formato de fecha, que es «minutos» de acuerdo a los Javadocs. Establecer los minutos a 9, no el mes. Parece que el mes el valor predeterminado es 0 (enero).

    Uso MM (capital ‘M) para analizar el mes. A continuación, verá 8, porque en Calendario meses comienzan con 0, no 1. Agregar 1 para volver a la deseada 9.

    El primer mes del año en el calendario Gregoriano y Juliano calendarios
    ENERO es 0

    //MM is month, mm is minutes
    DateFormat inputDF  = new SimpleDateFormat("MM/dd/yy");  

    y más tarde

    int month = cal.get(Calendar.MONTH) + 1; //To shift range from 0-11 to 1-12

    OriginalEl autor rgettman

  3. 3

    Si usted lee el SimpleDateFormat javadoc, te darás cuenta de que mm es para los minutos. Usted necesita MM por mes.

    DateFormat inputDF  = new SimpleDateFormat("MM/dd/yy");

    De lo contrario, el formato no leer un month campo y se asume un valor de 0.

    OriginalEl autor Sotirios Delimanolis

  4. 1

    Mes de formato debe ser MM en lugar de mm

     DateFormat inputDF  = new SimpleDateFormat("MM/dd/yy");

    OriginalEl autor Prabhaker

  5. 1

    Tiempo para que alguien proporcione la respuesta moderna. Las otras respuestas fueron buenas respuestas cuando la pregunta se hizo en el 2013 y todavía son correctos. Hoy no hay ninguna razón por qué usted debe luchar con el viejo, anticuado y, simultáneamente, notoriamente molesto SimpleDateFormat clase. java.time, el moderno Java fecha y la hora de la API, es mucho más agradable trabajar con:

        DateTimeFormatter inputFormatter = DateTimeFormatter.ofPattern("M/d/yy");
        LocalDate date1 = LocalDate.parse("9/30/11", inputFormatter);
        System.out.println(date1);

    Esto imprime

    2011-09-30

    La LocalDate clase representa una fecha sin la hora del día, exactamente lo que usted necesita, coincide con el requisito de una forma mucho más precisa de la edad, las clases Date y Calendar.

    El patrón de formato de cadenas que se usan con DateTimeFormatter se asemejan a los de SimpleDateFormat, hay un par de diferencias. Usted puede utilizar mayúsculas MM para exigir mes de dos dígitos (como el 09 de septiembre) o en una sola M para permitir el mes de escribirse con uno o dos dígitos. Del mismo modo dd o d para el día de mes. yy denota dos dígitos para el año y se interpreta con base 2000, que es, desde el año 2000 a 2099 incluido (no trabajo para mi cumpleaños).

    Enlace: Oracle tutorial Trail: Fecha Hora explicando cómo utilizar java.time.

    OriginalEl autor Ole V.V.

  6. 0

    Tratar como esta usando MM en lugar de mm:-

        DateFormat inputDF  = new SimpleDateFormat("MM/dd/yy");
        Date date1 = inputDF.parse("9/30/11");
    
        Calendar cal = Calendar.getInstance();
        cal.setTime(date1);
    
        int month = cal.get(Calendar.MONTH);
        int day = cal.get(Calendar.DAY_OF_MONTH);
        int year = cal.get(Calendar.YEAR);
    
        System.out.println(month+" - "+day+" - "+year);

    El mes impresa será de 8 como índice comienza desde 0

    o intentar con:-

    int month = cal.get(Calendar.MONTH) + 1;
    El mes impresa será de 8, debido a que el rango para el mes de 0-11, no 1-12.
    Añadió que en mi respuesta. Pensé OP debe ser consciente de que!!

    OriginalEl autor Rahul Tripathi

  7. 0

    mmes para los minutos, el uso de MM mientras que la especificación de formato.

    Calendar cal = Calendar.getInstance();
    cal.setTime(date1);
    
    int month = cal.get(Calendar.MONTH);//returns month value index starts from 0

    OriginalEl autor Dax Joshi

Dejar respuesta

Please enter your comment!
Please enter your name here