C# 如何在DatePickerDialog中使用非今天的特定日期设置最小日期(XAMARIN)
我想要的是将日期设置为禁用特定日期之前(而不是今天之前)。e、 g: 今天是2017年5月5日 具体目标日期:仅5月1日至5月5日 使用此代码将禁用所有大于此日期的项C# 如何在DatePickerDialog中使用非今天的特定日期设置最小日期(XAMARIN),c#,android,xamarin,android-datepicker,datepickerdialog,C#,Android,Xamarin,Android Datepicker,Datepickerdialog,我想要的是将日期设置为禁用特定日期之前(而不是今天之前)。e、 g: 今天是2017年5月5日 具体目标日期:仅5月1日至5月5日 使用此代码将禁用所有大于此日期的项 dialog.DatePicker.MaxDate = Java.Lang.JavaSystem.CurrentTimeMillis(); 但我不能在5月1日之前禁用 我现在有这个密码 public class DatePickerFragment : DialogFragment,
dialog.DatePicker.MaxDate = Java.Lang.JavaSystem.CurrentTimeMillis();
但我不能在5月1日之前禁用
我现在有这个密码
public class DatePickerFragment : DialogFragment,
DatePickerDialog.IOnDateSetListener
{
// TAG can be any string of your choice.
public static readonly string TAG = "X:" + typeof(DatePickerFragment).Name.ToUpper();
// Initialize this value to prevent NullReferenceExceptions.
Action<DateTime> _dateSelectedHandler = delegate { };
public static DatePickerFragment NewInstance(Action<DateTime> onDateSelected)
{
DatePickerFragment frag = new DatePickerFragment();
frag._dateSelectedHandler = onDateSelected;
return frag;
}
public override Dialog OnCreateDialog(Bundle savedInstanceState)
{
DateTime currently = DateTime.Now;
DatePickerDialog dialog = new DatePickerDialog(Activity,
this,
currently.Year,
currently.Month-1,
currently.Day);
//****************this is my problem*****************//
dialog.DatePicker.MinDate = CurrentUser.lastReplenish.Millisecond;
dialog.DatePicker.MaxDate = Java.Lang.JavaSystem.CurrentTimeMillis();
//***************************************************//
return dialog;
}
public void OnDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth)
{
// Note: monthOfYear is a value between 0 and 11, not 1 and 12!
DateTime selectedDate = new DateTime(year, monthOfYear + 1, dayOfMonth);
Log.Debug(TAG, selectedDate.ToLongDateString());
_dateSelectedHandler(selectedDate);
}
}
公共类DatePickerFragment:DialogFragment,
DatePickerDialog.IOnDateSetListener
{
//标记可以是您选择的任何字符串。
公共静态只读字符串TAG=“X:”+typeof(DatePickerFragment).Name.ToUpper();
//初始化此值以防止NullReferenceException。
动作_dateSelectedHandler=委托{};
公共静态DatePickerFragment NewInstance(操作onDateSelected)
{
DatePickerFragment frag=新的DatePickerFragment();
frag.\u dateSelectedHandler=onDateSelected;
返回碎片;
}
创建对话框上的公共覆盖对话框(Bundle savedInstanceState)
{
DateTime当前=DateTime.Now;
DatePickerDialog对话框=新建DatePickerDialog(活动,
这
目前,今年,,
目前,第1个月,
当前(天);
//****************这是我的问题*****************//
dialog.DatePicker.MinDate=CurrentUser.LastInfull.毫秒;
dialog.DatePicker.MaxDate=Java.Lang.JavaSystem.CurrentTimeMillis();
//***************************************************//
返回对话框;
}
公共void OnDateSet(日期选择器视图,整数年,整数月,整数月)
{
//注意:monthOfYear是介于0和11之间的值,而不是介于1和12之间的值!
DateTime selectedDate=新的日期时间(年、月+1、月天数);
Log.Debug(标记,selectedDate.ToLongDateString());
_dateSelectedHandler(selectedDate);
}
}
我猜“CurrentUser.lastInfull”是一个.NET日期时间对象?!
Android总是需要从1970年1月1日(纪元)开始的毫秒数,因此您需要计算一点:
dialog.DatePicker.MinDate = (long)CurrentUser.lastReplenish.ToUniversalTime()
.Subtract(DateTime.MinValue.AddYears(1969)).TotalMilliseconds;
我现在刚把它编码好,它工作得很好!非常感谢!:)