1

我正在尝试实现类似于时间表的东西,所以我基本上需要的是当我从日期选择器对话框中选择一个特定日期时,我想显示一个文本视图,其中包含所选日期所在的整周中的天数。

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

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

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

4

1 回答 1

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 调用该方法。请记住,您的一周总是从星期日开始。

这是我从这段代码中得到的结果: 在此处输入图像描述

祝你好运,

于 2013-11-14T13:41:34.247 回答