我试图以这种方式获得一个带有实际工作日名称的字符串:
Calendar c = Calendar.getInstance();
int dayOfWeek = c.get(Calendar.DAY_OF_WEEK);
if (c.get(Calendar.MONDAY) == dayOfWeek) weekDay = "monday";
else if (c.get(Calendar.TUESDAY) == dayOfWeek) weekDay = "tuesday";
else if (c.get(Calendar.WEDNESDAY) == dayOfWeek) weekDay = "wednesday";
else if (c.get(Calendar.THURSDAY) == dayOfWeek) weekDay = "thursday";
else if (c.get(Calendar.FRIDAY) == dayOfWeek) weekDay = "friday";
else if (c.get(Calendar.SATURDAY) == dayOfWeek) weekDay = "saturday";
else if (c.get(Calendar.SUNDAY) == dayOfWeek) weekDay = "sunday";
但是weekDay
始终为空,我实际上不知道为什么因为调试器说dayOfWeek
是5所以我应该等于c.get(Calendar.THURSDAY)
答案 0 :(得分:75)
这很简单
sCalendar = Calendar.getInstance();
String dayLongName = sCalendar.getDisplayName(Calendar.DAY_OF_WEEK, Calendar.LONG, Locale.getDefault());
答案 1 :(得分:59)
我通过以下方式完成了这项工作:
String weekDay;
SimpleDateFormat dayFormat = new SimpleDateFormat("EEEE", Locale.US);
Calendar calendar = Calendar.getInstance();
weekDay = dayFormat.format(calendar.getTime());
您需要查看SimpleDateFormat以了解详情。我认为这是最干净的方法,因为如果您只需要获取字符串值,则不需要开关或 if 语句。
答案 2 :(得分:15)
您应该将dayOfWeek直接与Calendar.MONDAY等进行比较。请参阅下面的代码
另外,如果是其他的话,我已经放了括号。不要依赖缩进代码流,即使你的if-else只有一个语句,也要明确地加上括号。
public static void main(String[] args) {
String weekDay = "";
Calendar c = Calendar.getInstance();
int dayOfWeek = c.get(Calendar.DAY_OF_WEEK);
if (Calendar.MONDAY == dayOfWeek) {
weekDay = "monday";
} else if (Calendar.TUESDAY == dayOfWeek) {
weekDay = "tuesday";
} else if (Calendar.WEDNESDAY == dayOfWeek) {
weekDay = "wednesday";
} else if (Calendar.THURSDAY == dayOfWeek) {
weekDay = "thursday";
} else if (Calendar.FRIDAY == dayOfWeek) {
weekDay = "friday";
} else if (Calendar.SATURDAY == dayOfWeek) {
weekDay = "saturday";
} else if (Calendar.SUNDAY == dayOfWeek) {
weekDay = "sunday";
}
System.out.println(weekDay);
}
答案 3 :(得分:2)
无需使用c.get
Calendar c = Calendar.getInstance();
int dayOfWeek = c.get(Calendar.DAY_OF_WEEK);
if (Calendar.MONDAY == dayOfWeek) weekDay = "monday";
else if (Calendar.TUESDAY == dayOfWeek) weekDay = "tuesday";
else if (Calendar.WEDNESDAY == dayOfWeek) weekDay = "wednesday";
else if (Calendar.THURSDAY == dayOfWeek) weekDay = "thursday";
else if (Calendar.FRIDAY == dayOfWeek) weekDay = "friday";
else if (Calendar.SATURDAY == dayOfWeek) weekDay = "saturday";
else if (Calendar.SUNDAY == dayOfWeek) weekDay = "sunday";
System.out.println(weekDay);
并输出:
thursday
如果您尝试使用此代码
打印c.get
值,则可以看到错误
System.out.println(c.get(Calendar.MONDAY));
System.out.println(c.get(Calendar.TUESDAY));
System.out.println(c.get(Calendar.WEDNESDAY));
System.out.println(c.get(Calendar.THURSDAY));
System.out.println(c.get(Calendar.FRIDAY));
System.out.println(c.get(Calendar.SATURDAY));
System.out.println(c.get(Calendar.SUNDAY));
例如我得到:
7
33
3
15
227
5
2013
结果将不正确,在我的情况下,如果我使用您的代码,我会Sunday
为weekDay
。
答案 4 :(得分:2)
试试这个
import java.text.DateFormatSymbols;
import java.util.Date;
...
String[] weekdays = new DateFormatSymbols().getWeekdays();
String[] month = new DateFormatSymbols().getMonths();
System.outprintln(weekdays[date.getDay()+1]+","+month[date.getMonth()]+" "+date.getDate());
答案 5 :(得分:2)
只需执行以下操作:
Date date = new Date();
CharSequence time = DateFormat.format("EEEE", date.getTime()); // gives like (Wednesday)