Могу ли я получить локализованное короткое денек-недельное имя (Mo/Tu/We/Th/Fr/Sa/Su для английского) на Java?
Как получить локализованное короткое день недели (Mo/Tu/We/Th...)
Ответ 1
Лучший способ - с 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
Ответ 2
Если стандартные аббревиатуры в порядке с вами, просто используйте класс Calendar следующим образом:
myCal.getDisplayName(Calendar.DAY_OF_WEEK, Calendar.SHORT, Locale.US);
Ответ 3
Пример использования 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, как было дольше, чем C-style String.format и System.out.printf, и я думаю, вы найдете, что большинство разработчиков Java будут более знакомы с ним и больше использовать его в существующих кодовых файлах, d рекомендую этот подход.
Ответ 4
Вы не можете сделать это с помощью класса 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
Ответ 5
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
Ответ 6
//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)+"'");
}