2010-09-24 52 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));