Как получить локализованное короткое название дня в неделю (Mo / Tu / We / Th ...) - PullRequest
30 голосов
/ 25 сентября 2010

Могу ли я получить локализованное короткое название дня в неделю (Mo / Tu / We / Th / Fr / Sa / Su для английского языка) на Java?

Ответы [ 6 ]

59 голосов
/ 25 сентября 2010

Лучший способ - использовать 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 
35 голосов
/ 29 июля 2011

Если вам подходят стандартные сокращения, просто используйте класс Calendar следующим образом:

myCal.getDisplayName(Calendar.DAY_OF_WEEK, Calendar.SHORT, Locale.US);
23 голосов
/ 25 сентября 2010

Пример использования 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 существовал дольше, чем String.format и System.out.printf в стиле C, и я думаю, вы обнаружите, что большинство разработчиков Java будут более знакомы с ним и больше будут его использовать в существующих базах кода, поэтому я ' буду рекомендовать такой подход.

4 голосов
/ 17 октября 2016

java.time

Обновление для тех, кто использует Java 8 и новее.

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

Instant instant = Instant.now();

ZonedDateTime zDateTime = instant.atZone(zoneId);

DayOfWeek day = zDateTime.getDayOfWeek();

Показать вывод.

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

При запуске. См. код, запущенный в прямом эфире на IdeOne.com .

Вт

T * 1016

3 голосов
/ 25 сентября 2010

Вы не можете сделать это с помощью класса Calendar (если вы не пишете свой собственный), но вы можете сделать это с помощью класса Date.(Эти два обычно используются рука об руку).

Вот пример:

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

Вывод:

localized month name: June/JUNE 
localized, abbreviated month: Jun/JUN 
localized day name: Friday/FRIDAY 
localized, abbreviated day: Fri/FRI
0 голосов
/ 24 декабря 2014
//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)+"'");
}            
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...