想要把一周中的某一天作为一个字符串,但是错误的一天

时间:2013-09-18 21:10:56

标签: java date

我尝试使用以下代码将日期作为字符串。但它返回错误的字符串。我可以使用此代码修复它。

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);

8 个答案:

答案 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> );