2010-09-24 55 views

回答

56

的最好方法是使用的SimpleDateFormat 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

請注意,dayNames數組將包含8個元素,第一個作爲一個空字符串,所以數組可以直接索引與星期日爲1和星期六爲7的日期編號。 – RenniePet 2013-08-17 19:16:09

+0

謝謝你的評論@ RenniePet-我非常困惑... – jacoballenwood 2018-02-16 22:52:06

3

你不能使用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

謝謝!將其放入String的最簡單方法是什麼? – fhucho 2010-09-24 21:13:32

+1

'String dayName = String.format(「%tA」,now);' – RealHowTo 2013-08-17 23:40:07

+0

很好的答案,請檢查您放置在示例中的鏈接..its 404 – Dev 2015-04-13 06:27:57

20

一個例子:

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風格的String.format和System.out.printf長,我想你會發現大多數Java開發人員會更熟悉它,並且在現有的代碼庫中使用的更多, d建議這種方法。

+0

這不是最好的答案嗎? – 2017-01-25 21:44:08

28

如果標準縮寫是細跟你,只使用Calendar類是這樣的:

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

+1以獲得此結果的標準化方式! :D – Cold 2014-03-13 18:15:08

+2

這是獲得它的體面方式。 – duanbo1983 2015-01-14 00:23:10

+0

內部日曆無論如何調用DateFormatSymbols.getShortWeekdays。 – 2015-09-06 09:00:49

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

這是相當晚來回答這個問題,但只是想與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));