2017-08-29 128 views
1

我想使日历显示特定月份,我想在日历如何设置日期选取器对话框最大日期和minmum日期

DateTime today = DateTime.Today; 
DatePickerDialog dateDialog = new DatePickerDialog(this, this.OnToDateSet, today.Year, today.Month - 1, today.Day); 
dateDialog.DatePicker.MaxDate = DateTime.Today.Millisecond; 
dateDialog.DatePicker.MinDate = new DateTime(today.Year, today.Month - 2, today.Day).Millisecond; 
dateDialog.Show(); 

这个定义允许的日期范围是什么,我进去返回......它显示&一个月错误年当它出现

如果我注释掉的maxDate和MINDATE然后日历右侧的年份和月份打开

enter image description here

有人请澄清

+0

https://stackoverflow.com/questions/16749361/how-set-maximum-date-in-的可能的复制datepicker-dialog-in-android – Mandy8055

+0

可能的重复[如何在android中的datepicker对话框中设置最大日期?](https://stackoverflow.com/questions/16749361/how-set-maximum-date-in-datepicker-dialog- in-android) –

+0

我不确定这一点,但是在其他框架下,我必须在选择日期后写一张支票,如果它超出限制范围,我不会让它们保存它。 –

回答

1

这是我得到的回报......它显示&一个月错误年当它出现

如果我注释掉的maxDate和MINDATE然后日历右侧年开月

如果你调试你的代码,你会发现DateTime.Today.Millisecondnew DateTime(today.Year, today.Month - 2, today.Day).Millisecond返回0.这就是出问题的地方。在Xamarin,如果你想获得毫秒,你需要做一个DateTime抵消:

DateTime today = DateTime.Today; 
DatePickerDialog dateDialog = new DatePickerDialog(this, this, today.Year, today.Month - 1, today.Day); 
//DateTime.MinValue isn't 1970/01/01 so we need to create a min date manually 
double maxSeconds = (DateTime.Today - new DateTime(1970, 1, 1)).TotalMilliseconds; 
double minSeconds = (new DateTime(today.Year, today.Month - 2, today.Day) - new DateTime(1970, 1, 1)).TotalMilliseconds; 
dateDialog.DatePicker.MaxDate = (long)maxSeconds; 
dateDialog.DatePicker.MinDate = (long)minSeconds; 
dateDialog.Show(); 
+0

感谢您的回答!你能解释我..请问关于DateTimeOffiset吗?它令我困惑 –

+0

为了让日历显示当前月份...我必须减去一个月..这是不对的?请参阅DatePickerDialog dateDialog = new DatePickerDialog(this,this.OnToDateSet,today.Year,today.Month - 1,today.Day);' –

+0

减少一个月让日历显示当前月份对我来说没有意义...这个月是从0开始还是什么的 –

相关问题