我尝试使用以下代码将日期作为字符串。但它返回错误的字符串。我可以使用此代码修复它。
private String getDayOfWeek(int value){
String day = "";
switch(value){
case 1:
day="Sunday";
break;
case 2:
day="Monday";
break;
case 3:
day="Tuesday";
break;
case 4:
day="Wednesday";
break;
case 5:
day="Thursday";
break;
case 6:
day="Friday";
break;
case 7:
day="Saturday";
break;
}
return day;
我将其实现为
Calendar c = Calendar.getInstance();
String dayOfWeek = getDayOfWeek(Calendar.DAY_OF_WEEK);
System.out.println(dayOfWeek);
答案 0 :(得分:14)
您需要使用
String dayOfWeek = getDayOfWeek(c.get(Calendar.DAY_OF_WEEK));
你之前在做什么
String dayOfWeek = getDayOfWeek(Calendar.DAY_OF_WEEK);
使用随机常量(that happens to be 7)调用您的方法,Calendar
类用于表示日期中的DAY_OF_WEEK
字段。
您实际需要的是获取Calendar
实例中星期几的值,即Calendar#get(int)
c.get(Calendar.DAY_OF_WEEK)
回报。
在相关说明中,尝试学习并使用评论中所述的实际调试器。
答案 1 :(得分:8)
使用日历对象中的getdisplayname方法。
Calendar currentDate=new GregorianCalendar();
String dayOfWeek = currentDate.getDisplayName( Calendar.DAY_OF_WEEK ,Calendar.LONG, Locale.getDefault());
答案 2 :(得分:5)
我认为获得星期几的最好方法是使用这段简单的代码:
Date date = new Date();
SimpleDateFormat dateFormat = new SimpleDateFormat("EEEEE");
String dayOfWeek = dateFormat.format(date);
System.out.println(dayOfWeek);
如果您想使用日历:
Calendar c = Calendar.getInstance();
SimpleDateFormat dateFormat = new SimpleDateFormat("EEEEE");
String dayOfWeek = dateFormat.format(c.getTime());
System.out.println(dayOfWeek);
格式“EEEEE”返回星期几:星期日,星期一..用机器的语言,在代码上用英语修复更好。
答案 3 :(得分:3)
您可以使用SimpleDateFormat
:
SimpleDateFormat formatter = new SimpleDateFormat("EEEE");
System.out.println(formatter.format(new Date());
这将返回当前星期几的String表示。
答案 4 :(得分:2)
以下是使用Java 1.8 Time API的两行代码段。
LocalDate localDate = LocalDate.of(Integer.valueOf(year),Integer.valueOf(month),Integer.valueOf(day));
String dayOfWeek = String.valueOf(localDate.getDayOfWeek());
答案 5 :(得分:2)
LocalDate::getDisplayName
从Java 8开始,使用DateTime API就有一种很好的方法
LocalDate localDate = LocalDate.parse("2018-08-29");
DayOfWeek dayOfWeek = localDate.getDayOfWeek();
String displayName = dayOfWeek.getDisplayName(TextStyle.FULL, Locale.ENGLISH);
现在displayName等于Wednesday
。
使用DayOfWeek.of(int dayOfWeek)
时,不需要switch语句。
要按照问题中的编号访问DayOfWeek
,请按照ISO 8601标准在周一至周日使用1-7。
DayOfWeek.of( 1 ).getDisplayName(TextStyle.FULL, Locale.ENGLISH)
星期一
或使用七个命名枚举对象之一。
DayOfWeek.MONDAY.getDisplayName(TextStyle.FULL, Locale.ENGLISH)
星期一
答案 6 :(得分:1)
您可以使用以下方法通过传递特定日期
来获取星期几这里对于Calendar类的set方法,Tricky part是月参数的索引,从0开始。
public static String getDay(int day, int month, int year) {
Calendar cal = Calendar.getInstance();
if(month==1){
cal.set(year,0,day);
}else{
cal.set(year,month-1,day);
}
int dow = cal.get(Calendar.DAY_OF_WEEK);
switch (dow) {
case 1:
return "SUNDAY";
case 2:
return "MONDAY";
case 3:
return "TUESDAY";
case 4:
return "WEDNESDAY";
case 5:
return "THURSDAY";
case 6:
return "FRIDAY";
case 7:
return "SATURDAY";
default:
System.out.println("GO To Hell....");
}
return null;
}
答案 7 :(得分:0)
另一种暴力方式是
List<String> days = Arrays.asList( new String[] {"sunday","monday", "tuesday", "wednesday","thursday","friday","saturday"});
您可以将其用作days.get( <your input value> )
;