我尝试使用以下代码将日期作为字符串.但它返回错误的字符串.我可以使用此代码修复它吗?
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;
Run Code Online (Sandbox Code Playgroud)
我实现它
Calendar c = Calendar.getInstance();
String dayOfWeek = getDayOfWeek(Calendar.DAY_OF_WEEK);
System.out.println(dayOfWeek);
Run Code Online (Sandbox Code Playgroud)
Sot*_*lis 15
你需要使用
String dayOfWeek = getDayOfWeek(c.get(Calendar.DAY_OF_WEEK));
Run Code Online (Sandbox Code Playgroud)
你之前在做什么
String dayOfWeek = getDayOfWeek(Calendar.DAY_OF_WEEK);
Run Code Online (Sandbox Code Playgroud)
正在使用随机常量(恰好是7)调用您的方法,Calendar该类用于表示DAY_OF_WEEK日期中的字段.
你实际需要的是在你的Calendar实例中得到星期几的值,这就是Calendar#get(int)
c.get(Calendar.DAY_OF_WEEK)
Run Code Online (Sandbox Code Playgroud)
回报.
在相关说明中,尝试学习并使用注释中所述的实际调试器.
从日历对象中使用getdisplayname方法.
Calendar currentDate=new GregorianCalendar();
String dayOfWeek = currentDate.getDisplayName( Calendar.DAY_OF_WEEK ,Calendar.LONG, Locale.getDefault());
Run Code Online (Sandbox Code Playgroud)
我认为获得星期几的最佳方式是使用以下简单的代码片段:
Date date = new Date();
SimpleDateFormat dateFormat = new SimpleDateFormat("EEEEE");
String dayOfWeek = dateFormat.format(date);
System.out.println(dayOfWeek);
Run Code Online (Sandbox Code Playgroud)
如果要使用日历:
Calendar c = Calendar.getInstance();
SimpleDateFormat dateFormat = new SimpleDateFormat("EEEEE");
String dayOfWeek = dateFormat.format(c.getTime());
System.out.println(dayOfWeek);
Run Code Online (Sandbox Code Playgroud)
格式"EEEEE"返回星期几:星期日,星期一..用机器的语言,在代码上用英语修复更好.
DayOfWeek::getDisplayName自 Java 8 以来,使用 DateTime API 有一种很好的方法可以做到这一点
LocalDate localDate = LocalDate.parse("2018-08-29");
DayOfWeek dayOfWeek = localDate.getDayOfWeek();
String displayName = dayOfWeek.getDisplayName(TextStyle.FULL, Locale.ENGLISH);
Run Code Online (Sandbox Code Playgroud)
现在displayName等于Wednesday。
随着DayOfWeek.of(int dayOfWeek)没有必要switch语句。
要访问问题中所示的DayOfWeek按编号,请根据 ISO 8601 标准在周一至周日使用 1-7。
DayOfWeek.of( 1 ).getDisplayName(TextStyle.FULL, Locale.ENGLISH)
Run Code Online (Sandbox Code Playgroud)
周一
或者使用七个命名的枚举对象之一。
DayOfWeek.MONDAY.getDisplayName(TextStyle.FULL, Locale.ENGLISH)
Run Code Online (Sandbox Code Playgroud)
周一