Android datepicker对话框可以获取一周中的几天

时间:2013-11-13 08:54:00

标签: android android-layout android-datepicker android-date

我正在尝试实现类似于时间表的内容,所以我基本上需要的是当我从datepicker对话框中选择一个特定日期然后我想显示一个textview,其中包含所选日期所在的整周的日期本。

以下是我从日期纠察对话框中选择日期的实施方法。

Calendar cal = Calendar.getInstance();
EditText edt1;
String  dateFormat = "dd/MM/yyyy";

final DatePickerDialog.OnDateSetListener date1 = new DatePickerDialog.OnDateSetListener() {

    @Override
    public void onDateSet(DatePicker view, int year, int monthOfYear,
            int dayOfMonth) {
        // TODO Auto-generated method stub
        cal.set(Calendar.YEAR, year);
        cal.set(Calendar.MONTH, monthOfYear);
        cal.set(Calendar.DAY_OF_MONTH, dayOfMonth);
        updateLabel1();
    }
};

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_timesheet_form);

    edt1=(EditText)findViewById(R.id.editText1);

    edt1.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            new DatePickerDialog(TimesheetForm.this, date1, cal.get(Calendar.YEAR), cal.get(Calendar.MONTH), cal.get(Calendar.DAY_OF_MONTH)).show();
        }
    });


}
private void updateLabel1() {

    SimpleDateFormat sdf = new SimpleDateFormat(dateFormat, Locale.US);
    edt1.setText(sdf.format(fromCalendar.getTime()));
} 

上面的代码从对话框中返回所选日期,但似乎没有方法可以返回整周的日期。

1 个答案:

答案 0 :(得分:0)

以下代码是获取当前/所选周的日期的示例。在我的情况下,我设置硬编码的日期来测试功能。

Calendar cal = Calendar.getInstance();

        // Set a custom date : 2013 November 17th
        cal.set(Calendar.YEAR, 2013);
        cal.set(Calendar.MONTH, 10);
        cal.set(Calendar.DATE, 17);

        // Date to an int variable to display
        int date = cal.get(Calendar.DATE);

        // Display the week number
        int weekNr = cal.get(Calendar.WEEK_OF_YEAR);

        // Generate the String with the days of the current week
        StringBuffer weekDays = new StringBuffer();
        for (int i = 1; i <= 7; i++) {
            cal.set(Calendar.DAY_OF_WEEK, i);
            weekDays.append(cal.get(Calendar.DATE));

            if (i < 7) {
                weekDays.append(" :: ");
            }
        }

        // Show an alert
        showAlert("Year: " + cal.get(Calendar.YEAR) + "\nMonth : " + (cal.get(Calendar.MONTH) + 1) + 
                    "\nDay: " + date + "\n\nWeek : " + weekNr + "\n\nWeek Days : " + weekDays.toString());

这里是警报的方法:

public void showAlert(String message) {
        new AlertDialog.Builder(this).setTitle("Date").setMessage(message).setCancelable(true).show();
    }

你必须稍微修改一下,这样才能适合你的代码。最佳做法是为此创建单独的方法或将其添加到updateLabel1()方法中,并从DatePicker中的onDateSetListener调用该方法。 请记住,您的一周总是从周日开始。

这是我从这段代码得到的结果: enter image description here

祝你好运,