C# 从某个日期开始禁用几个月后的所有日期Android DatePicker
我的应用程序中有两个日期选择器。首先,显示起始日期,即C# 从某个日期开始禁用几个月后的所有日期Android DatePicker,c#,android,datetime,datepicker,xamarin,C#,Android,Datetime,Datepicker,Xamarin,我的应用程序中有两个日期选择器。首先,显示起始日期,即CurrentDate+1,第二个显示ToDate,即FromDate+1 我已经实现了上述场景。但是现在我想禁用自FromDate起6个月后的所有日期。 我尝试了以下操作,但日历显示当前日期为1970年1月1日 BookingActivity.cs void IbtnToDate_Click(object sender, EventArgs e) { toDateClicked = true;
CurrentDate+1
,第二个显示ToDate,即FromDate+1
我已经实现了上述场景。但是现在我想禁用自FromDate起6个月后的所有日期。
我尝试了以下操作,但日历显示当前日期为1970年1月1日
BookingActivity.cs
void IbtnToDate_Click(object sender, EventArgs e)
{
toDateClicked = true;
fromDateClicked = false;
dateFragment = new DatePickerFragment(this, DateTime.Parse (editFromDate.Text.ToString ()).AddDays (1), this, DateTime.Parse (editFromDate.Text.ToString ()));
dateFragment.Show(FragmentManager, null);
}
void IbtnFromDate_Click(object sender, EventArgs e)
{
fromDateClicked = true;
toDateClicked = false;
dateFragment = new DatePickerFragment(this, date.AddDays (1), this, date.AddDays (1));
dateFragment.Show(FragmentManager, null);
}
public void OnDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth)
{
var date1 = new DateTime(year, monthOfYear + 1, dayOfMonth);
if (fromDateClicked)
UpdateFromDate (date1);
else if (toDateClicked) {
UpdateToDate (date1);
}
}
DatePickerFragment.cs
public class DatePickerFragment : DialogFragment
{
private readonly Context _context;
private DateTime _date, _minDate, _maxDate;
private readonly Android.App.DatePickerDialog.IOnDateSetListener _listener;
public DatePickerFragment(Context context, DateTime date, Android.App.DatePickerDialog.IOnDateSetListener listener, DateTime minDate)
{
_context = context;
_date = date;
_listener = listener;
_minDate = minDate;
}
public override Dialog OnCreateDialog(Bundle savedState)
{
var dialog = new Android.App.DatePickerDialog(_context, _listener, _date.Year, _date.Month - 1, _date.Day);
dialog.DatePicker.MinDate =_minDate.AddDays (1).Millisecond;
dialog.DatePicker.MaxDate = _date.AddMonths(6).Millisecond;
return dialog;
}
}
我怎样才能做到呢?任何帮助都将不胜感激。您可以使用
setMaxDate
并执行以下操作:
1-从_mindate字符串获取日期:
String dateString = "03/26/2012";
SimpleDateFormat dateFormat = new SimpleDateFormat("MM/dd/yyyy");
Date convertedDate = new Date();
try {
convertedDate = dateFormat.parse(dateString);
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
2-从min_日期起6个月的获取日期:
Calendar cal = GregorianCalendar.getInstance();
cal.setTime(convertedDate);
cal.add(Calendar.MONTH, 1);
Date 6MonthsFromCurrentDate = cal.getTime();
3-将日期选择器限制为该日期:
datePickerDialog.getDatePicker().setMaxDate(6MonthsFromCurrentDate.getTime());
使用这些代码行
Calendar ci = Calendar.getInstance();
String CiDateTime = ci.get(Calendar.YEAR) + "-" +
(ci.get(Calendar.MONTH) + 7) + "-" + //for 6 month future
ci.get(Calendar.DAY_OF_MONTH);
SimpleDateFormat f = new SimpleDateFormat("dd-MMM-yyyy");
Date d;
try {
d = f.parse(CiDateTime);
long milliseconds = d.getTime();
_date.setMaxDate(milliseconds);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
表示您不想显示旧日期???@RavindraKushwaha我不想显示自开始日期起6个月后的未来日期。我已更新了我的答案,因此它将完美运行…请检查我下面的解决方案。谢谢回复。但是你能解释一下你对我的问题的回答吗question@user3034944现在检查一下。希望能有帮助。这很有效。但它禁用了从当前日期算起的6个月。如何从_minDate?convertedDate=dateFormat.parse(dateString)中禁用它,即使dateString是我选择的日期,我也会获取当前日期可能是错误的日期格式…您使用的格式是什么…日期字符串是什么?谢谢您的回答。但它不起作用。未来日期未禁用表示…6个月后的未来日期未禁用或当前未来日期未禁用??未来6个月未禁用