2013-03-11 64 views
0

鑑於此代碼,它將打印出正確的月份和年份,但似乎顯示通常不正確的隨機日期。我已經看過了一些鏈接,包括herehere檢索給定月份的第一週的第一天

import java.util.Calendar; 
import javax.swing.JOptionPane; 
public class DayOfTheWeek { 
    Calendar now = Calendar.getInstance(); 
    int month; 
    int year; 
    String[] monthString; 
    public String monthOfInspection() { 
    String Month = JOptionPane.showInputDialog("Select month of inspection: "); 
    month = Integer.parseInt(Month); 
    monthString = new String[] { 
     "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec" 
    }; 
    return monthString[month - 1]; 
    } 
    public int yearOfInspection() { 
    if(month == 1) { 
     now.get(Calendar.YEAR); 
     now.add(Calendar.YEAR, 1); 
    } 
    year = now.get(Calendar.YEAR); 
    return year; 
    } 
    public void dayOfTheWeek() { 
    now.set(Calendar.DAY_OF_MONTH, 1); 
    now.set(Calendar.MONTH, month); 
    now.set(Calendar.YEAR, year); 
    now.set(Calendar.DAY_OF_WEEK_IN_MONTH, 0); 
    String[] strDays = new String[] { 
     "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday" 
    }; 
    JOptionPane.showMessageDialog(null, year); 
    JOptionPane.showMessageDialog(null, monthString[month - 1]); 
    JOptionPane.showMessageDialog(null, now.get(Calendar.DAY_OF_WEEK_IN_MONTH)); 
    JOptionPane.showMessageDialog(null, strDays[now.get(Calendar.DAY_OF_WEEK_IN_MONTH) - 1]); 
    } 
} 
+0

更改設置的順序,每月設定一天,一個月後,並沒有設置星期中月。 – 2013-03-11 04:19:58

回答

0

你或許應該使用Calendar.DAY_OF_WEEK而不是Calendar.DAY_OF_WEEK_IN_MONTH

public void dayOfTheWeek() { 
    now.set(Calendar.YEAR, year); 
    now.set(Calendar.MONTH, month); 
    now.set(Calendar.DAY_OF_MONTH, 1); 

    String[] strDays = new String[] { 
     "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday" 
    }; 
    JOptionPane.showMessageDialog(null, year); 
    JOptionPane.showMessageDialog(null, monthString[month - 1]); 
    JOptionPane.showMessageDialog(null, now.get(Calendar.DAY_OF_WEEK)); 
    JOptionPane.showMessageDialog(null, strDays[now.get(Calendar.DAY_OF_WEEK) -  1]); 
    } 
0

假設你有正確的monthyear這是你可以做什麼:

now.set(Calendar.DATE, 1); 
now.set(Calendar.MONTH, month); 
now.set(Calendar.YEAR, year); 
int dayOfWeek = now.get(Calendar.DAY_OF_WEEK);