簡體   English   中英

Android Studio:Calendar.DAY_OF_WEEK 的錯誤

[英]Android Studio: Bug with Calendar.DAY_OF_WEEK

我沒有在另一個問題中找到我的“錯誤”,所以我真的需要幫助。

在我的應用程序中,我有以下代碼:

    Calendar calendar = Calendar.getInstance();
    calendar.set(Calendar.MONTH, Calendar.MONTH);
    calendar.set(Calendar.YEAR, Calendar.YEAR);
    calendar.set(Calendar.DAY_OF_MONTH, Calendar.DAY_OF_MONTH);

    calendar.set(Calendar.HOUR_OF_DAY, Calendar.HOUR);
    calendar.set(Calendar.MINUTE, Calendar.MINUTE);
    calendar.set(Calendar.SECOND, Calendar.SECOND);
    frase(calendar);

這段代碼在onCreate里面,下面的代碼在onCreate()下面;

     public void frase(Calendar calendar)
{
    int day = calendar.get(Calendar.DAY_OF_WEEK);

    switch (day) {
        case Calendar.MONDAY:textView.setText(getText(R.string.segunda));break;
        case Calendar.TUESDAY:textView.setText(getText(R.string.terca));break;
        case Calendar.WEDNESDAY:textView.setText(getText(R.string.quarta));break;
        case Calendar.THURSDAY:textView.setText(getText(R.string.quinta));break;
        case Calendar.FRIDAY:textView.setText(getText(R.string.sexta));break;
        case Calendar.SATURDAY:textView.setText(getText(R.string.sabado));break;
        case Calendar.SUNDAY:textView.setText(getText(R.string.domingo));break;
    }
}

當我運行應用程序時,我的模擬器總是返回星期六的情況,但一周中的模擬器日期是星期三。

Calendar.set()的第二個參數是您希望由第一個參數定義的特定字段的值。 現在您正在設置常量值,即字段索引號,這是沒有意義的。

完全刪除您的set()調用。 Calendar.getInstance()已經返回一個初始化為當前日期和時間的實例。

獲取日期

public static String getDate() {
        Date myDate = new Date();
        String date = new SimpleDateFormat("yyyy-MM-dd").format(myDate);
       // new SimpleDateFormat("hh-mm-a").format(myDate);
        return date;
    }

獲取星期幾

 public static int dayOfWeek(String date) {
        try {
            int day = 0;
            SimpleDateFormat simpleDateformat = new SimpleDateFormat("yyyy-MM-dd");
            Date now = simpleDateformat.parse(date);
            Calendar calendar = Calendar.getInstance();
            calendar.setTime(now);
            day = calendar.get(Calendar.DAY_OF_WEEK) - 1;
            return day;
        } catch (Exception e) {
            return null;
        }
    }

或者干脆打電話

getDay(新日期());

public static String getDay(Date date){

    SimpleDateFormat simpleDateFormat = new SimpleDateFormat("EEEE");
    //System.out.println("DAY "+simpleDateFormat.format(date).toUpperCase());                       
    return simpleDateFormat.format(date).toUpperCase();
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM