2010-09-24 12 views

Respuesta

56

La mejor forma de hacerlo es con java.text.DateFormatSymbols

DateFormatSymbols symbols = new DateFormatSymbols(new Locale("it")); 
// for the current Locale : 
// DateFormatSymbols symbols = new DateFormatSymbols(); 
String[] dayNames = symbols.getShortWeekdays(); 
for (String s : dayNames) { 
    System.out.print(s + " "); 
} 
// output : dom lun mar mer gio ven sab 
+15

Tenga en cuenta que el array dayNames contendrá 8 elementos, el primero siendo una cadena vacía, por lo que la matriz se puede indexar directamente con un número de día donde el domingo es 1 y el sábado es 7. – RenniePet

+0

gracias por ese comentario @ RenniePet-i estaba muy confundido ... – jacoballenwood

3

No puede hacerlo con la clase Calendario (a menos que escriba la suya propia), pero puede hacerlo con la clase Fecha. (Los dos generalmente se usan de la mano).

He aquí un ejemplo:

import java.util.Date; 

public class DateFormatExample { 

    public static void main(String[] args) { 
    Calendar nowCal = Calendar.getInstance(); // a Calendar date 
    Date now = new Date(nowCal.getTimeInMillis()); // convert to Date 
    System.out.printf("localized month name: %tB/%TB\n", now, now); 
    System.out.printf("localized, abbreviated month: %tb/%Tb\n", now, now); 
    System.out.printf("localized day name: %tA/%TA\n", now, now); 
    System.out.printf("localized, abbreviated day: %ta/%Ta\n", now, now); 
    } 
} 

Salida:

localized month name: June/JUNE 
localized, abbreviated month: Jun/JUN 
localized day name: Friday/FRIDAY 
localized, abbreviated day: Fri/FRI 
+0

Gracias! ¿Cuál es la forma más sencilla de ponerlo en String? – fhucho

+1

'String dayName = String.format ("% tA ", ahora);' – RealHowTo

+0

buena respuesta, compruebe el enlace que colocó en un ejemplo ... muestra 404 – Dev

20

Un ejemplo utilizando SimpleDateFormat:

Date now = new Date(); 
// EEE gives short day names, EEEE would be full length. 
SimpleDateFormat dateFormat = new SimpleDateFormat("EEE", Locale.US); 
String asWeek = dateFormat.format(now); 

SimpleDateFormat ha estado más tiempo que el C-style String.format y System.out.printf, y creo que encontraría que la mayoría de los desarrolladores de Java estarían más familiarizados con él y más en uso en las bases de código existentes, así que ' d recomendar ese enfoque.

+0

¿No es esta la mejor respuesta? –

28

Si abreviaturas estándar están muy bien con usted, sólo tiene que utilizar la clase calendario de esta manera:

myCal.getDisplayName(Calendar.DAY_OF_WEEK, Calendar.SHORT, Locale.US); 
+1

+1 para obtener una forma estandarizada de obtener este resultado. : D – Cold

+2

Esta es la forma decente de conseguirlo. – duanbo1983

+0

Internally Calendar llama de todos modos a DateFormatSymbols.getShortWeekdays. –

0
//you need to use joda library   
List<String> dayList = new ArrayList<String>(); 
String[] days = new String[7]; 
int a=2; 
//a =starting day of week 1=sunday ,2=monday 
Calendar c2 = Calendar.getInstance(); 
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd"); 
c2.set((Calendar.DAY_OF_WEEK),a); 
int maxDay = c2.getActualMaximum(Calendar.DAY_OF_WEEK); 
for(int i=0;i<maxDay;i++) 
{     
    days[i] = df.format(c2.getTime()); 
    c2.add(Calendar.DAY_OF_MONTH, 1); 
    String dayOfWeek = new LocalDate(days[i]).dayOfWeek().getAsShortText(); 
    dayList.add(dayOfWeek);   
}    
for(int i=0;i<maxDay;i++) 
{ 
    System.out.print(" '"+dayList.get(i)+"'"); 
}    
2

Es muy tarde para responder a esta pregunta, pero sólo quería actualizar la respuesta con Java 8.

ZoneId zoneId = ZoneId.of("America/Los_Angeles"); 

Instant instant = Instant.now(); 

ZonedDateTime zDateTime = ZonedDateTime.ofInstant(instant, zoneId); 

DayOfWeek day = zDateTime.getDayOfWeek(); 

System.out.println(day.getDisplayName(TextStyle.SHORT, Locale.US)); 
System.out.println(day.getDisplayName(TextStyle.NARROW, Locale.US)); 
Cuestiones relacionadas