我正在尝试实现类似于时间表的内容,所以我基本上需要的是当我从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()));
}
上面的代码从对话框中返回所选日期,但似乎没有方法可以返回整周的日期。
答案 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调用该方法。 请记住,您的一周总是从周日开始。
这是我从这段代码得到的结果:
祝你好运,氪