web-dev-qa-db-fra.com

Comment se localiser court nom de la semaine (Mo/Tu/We/Th ...)

Puis-je obtenir un nom court localisé de la semaine (Mo/Tu/Nous/Th/Fr/Sa/Su pour l'anglais) en Java?

29
fhucho

Le meilleur moyen est d'utiliser 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 
59
RealHowTo

Si les abréviations standard vous conviennent, utilisez simplement la classe Calendar comme ceci:

myCal.getDisplayName(Calendar.DAY_OF_WEEK, Calendar.SHORT, Locale.US);
35
Drakanor

Un exemple utilisant 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 existe depuis plus longtemps que les styles String.format et System.out.printf de style C, et je pense que la plupart des développeurs Java le connaissent mieux et qu’il est davantage utilisé dans les bases de code existantes. approche.

23
Greg Case

Vous ne pouvez pas le faire avec la classe Calendar (sauf si vous écrivez vous-même), mais vous pouvez utiliser la classe Date. (Les deux sont généralement utilisés main dans la main).

Voici un exemple: 

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

Sortie:

localized month name: June/JUNE 
localized, abbreviated month: Jun/JUN 
localized day name: Friday/FRIDAY 
localized, abbreviated day: Fri/FRI
3
rlb.usa

Java.time

Mise à jour pour ceux qui utilisent Java 8 et versions ultérieures.

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

Instant instant = Instant.now();

ZonedDateTime zDateTime = instant.atZone(zoneId);

DayOfWeek day = zDateTime.getDayOfWeek();

Afficher la sortie.

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

Quand couru. Voir similaire code exécuté en direct sur IdeOne.com .

Mar

T

3
WitVault
//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)+"'");
}            
0
Rahul Gholap