0

DatePickerDialogに対して、mindateを1900に、maxdateを1997に設定しようとしています。しかし、私が何をしようとしても、ダイアログの結果は本来あるべきものではありません。ドキュメントには、1970年からのミリ秒数である必要があると記載されています。したがって、このコードは機能するはずです。

私は何を逃しましたか?

var dialog = new DatePickerDialog(this, (ss, ee) =>
{
  var dateSelected = ee.Date;
}, model.Birthday.Year, model.Birthday.Month - 1, model.Birthday.Day);


var origin = new DateTime(1970, 1, 1);
dialog.DatePicker.MinDate = 0;// (int)(DateTime.Now.Date.AddYears(-120) - origin).TotalMilliseconds;
dialog.DatePicker.MaxDate = (int)(DateTime.Now.Date.AddYears(-8) - origin).TotalMilliseconds;
4

2 に答える 2

3

問題は、が保持できるTotalMilliseconds最大値を超えていることです。int

だから、それをキャストするlongとうまくいくでしょう、それは実際にDatePicker.MaxDate 期待していることです。

dialog.DatePicker.MaxDate = (long)(DateTime.Now.Date.AddYears(-8) - origin).TotalMilliseconds;
于 2013-02-27T01:58:10.873 に答える
1
  protected override Dialog OnCreateDialog(int id)
        {
            switch (id)
            {
                case DATE_DIALOG_ID:
                    DatePickerDialog dialog = new DatePickerDialog(this, OnDateSet, date.Year, date.Month - 1, date.Day);
                    string _gs = servis.gosterilecekRandevuGunSuresi();
                    int _guns = Convert.ToInt32(_gs);



                    DateTime origin = new DateTime(1970, 1, 1);
                    string tarih = origin.Date.ToString("dd.MM.yyyy");
                    DateTime dt = Convert.ToDateTime(tarih);
                    var datetime = Convert.ToDateTime(tarih);

                    long sayi = (long)(DateTime.Now.Date - origin.Date).TotalMilliseconds;
                    long sayi2 = (long)(DateTime.Now.Date.AddDays(_guns) - origin).TotalMilliseconds;
                    dialog.DatePicker.MinDate = sayi;
                    dialog.DatePicker.MaxDate = sayi2;

                    return dialog;
            }
            return null;
        }
于 2014-08-15T08:02:49.153 に答える