2010-09-24 10 views

risposta

56

Il modo migliore è 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

Attenzione che l'array dayNames conterrà 8 elementi, il primo essendo una stringa vuota, quindi la matrice può essere indicizzata direttamente con un numero di giorno dove domenica è 1 e sabato è 7. – RenniePet

+0

grazie per quel commento @ RenniePet-i era estremamente confuso ... – jacoballenwood

3

Non è possibile farlo con la classe Calendario (a meno che non si scriva da solo), ma è possibile con la classe Date. (I due sono solitamente usati mano nella mano).

Ecco un esempio:

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

uscita:

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

Grazie! Qual è il modo più semplice per inserirlo in String? – fhucho

+1

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

+0

nice answer, controlla il link che hai inserito in un esempio ..its che mostra 404 – Dev

20

un esempio utilizzando 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); 
012.

SimpleDateFormat come se fosse più lungo rispetto allo stile C String.format e System.out.printf, e penso che si potrebbe trovare la maggior parte degli sviluppatori Java sarebbe più familiare con esso e più in uso in basi di codice esistenti, quindi I ' d raccomandare questo approccio.

+0

Non è questa la migliore risposta? –

28

Se abbreviazioni standard vanno bene con voi, basta usare classe Calendar in questo modo:

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

+1 per un modo standardizzato per ottenere questo risultato! : D – Cold

+2

Questo è il modo giusto per ottenerlo. – duanbo1983

+0

Internally Calendar chiama comunque 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

E 'abbastanza tardi per rispondere a questa domanda, ma volevo solo per aggiornare la risposta 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)); 
Problemi correlati