2011-10-29 12 views
5

tengo este código simple:Java día de la semana de la cadena

SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); 
Date date = format.parse("2011-10-29"); 
calendar.setTime(date); 
Log.d("Debug","Day of the week = "+(calendar.get(Calendar.DAY_OF_WEEK)==Calendar.SATURDAY)); 

el 29 de octubre es un sábado así que ¿por qué recibo falso?

+1

¿Qué configuración regional utiliza su instancia de Calendario? Tal vez eso haga la diferencia, porque este código devuelve verdadero para mí. – Craigy

+0

¿De verdad? Hice Calendar.getInstance(); ¿está mal? –

+0

@doubter: registre la fecha del calendario para ver lo que pasó como fecha –

Respuesta

5

Aquí es un ejemplo de cómo esto podría suceder ...

SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); 
    Date date = null; 
    try { 
     date = format.parse("2011-10-29"); 
    } catch (ParseException e) { 
     e.printStackTrace(); 
    } 
    Calendar calendar = Calendar.getInstance(TimeZone.getTimeZone("GMT")); 
    calendar.setTime(date); 
    System.out.println("Day of the week = " 
      + (calendar.get(Calendar.DAY_OF_WEEK))); 
    System.out.println("Saturday? " 
      + (calendar.get(Calendar.DAY_OF_WEEK) == Calendar.SATURDAY)); 

    try { 
     date = format.parse("2011-10-29"); 
    } catch (ParseException e) { 
     e.printStackTrace(); 
    } 
    calendar = Calendar.getInstance(TimeZone.getTimeZone("PST")); 
    calendar.setTime(date); 
    System.out.println("Day of the week = " 
      + (calendar.get(Calendar.DAY_OF_WEEK))); 
    System.out.println("Saturday? " 
      + (calendar.get(Calendar.DAY_OF_WEEK) == Calendar.SATURDAY)); 

que emite

Day of the week = 7 
Saturday? true 
Day of the week = 6 
Saturday? false 

así que sí, dependiendo de qué zona horaria que están en él será o no será el sábado .

+0

el día de la semana no depende de la zona horaria, 2011-10-29 fue el sábado en todas partes –

0

conseguir cierto con el siguiente código:

try { 
     SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); 
     Date date = format.parse("2011-10-29"); 
     Calendar cal = GregorianCalendar.getInstance(); 
     cal.setTime(date); 
     System.out.println(cal.get(Calendar.DAY_OF_WEEK)==Calendar.SATURDAY); 
    } 
    catch(Exception e) { 
     e.printStackTrace(); 
    } 

Tal vez una configuración local?

Cuestiones relacionadas