如何在 DatePickerDialog 中使用特定日期设置最小日期而不是今天 (XAMARIN)
How to set min date in DatePickerDialog with a specific date not today (XAMARIN)
我想要的是将日期设置在要禁用的特定日期之前(而不是在今天之前)。例如:
今天是 2017 年 5 月 5 日
目标具体日期:仅限 5 月 1 日至 5 月 5 日。
使用此代码禁用所有超过这一天的日期
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);
}
}
我
我猜 "CurrentUser.lastReplenish" 是一个 .NET DateTime 对象?!
Android总是需要从1970年1月1日(纪元)开始的毫秒数,所以需要计算一下:
dialog.DatePicker.MinDate = (long)CurrentUser.lastReplenish.ToUniversalTime()
.Subtract(DateTime.MinValue.AddYears(1969)).TotalMilliseconds;
我想要的是将日期设置在要禁用的特定日期之前(而不是在今天之前)。例如:
今天是 2017 年 5 月 5 日 目标具体日期:仅限 5 月 1 日至 5 月 5 日。
使用此代码禁用所有超过这一天的日期
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);
}
}
我
我猜 "CurrentUser.lastReplenish" 是一个 .NET DateTime 对象?! Android总是需要从1970年1月1日(纪元)开始的毫秒数,所以需要计算一下:
dialog.DatePicker.MinDate = (long)CurrentUser.lastReplenish.ToUniversalTime()
.Subtract(DateTime.MinValue.AddYears(1969)).TotalMilliseconds;