2013-02-26 4 views
0

J'essaye de placer mindate à 1900 et à maxdate à 1997 à un DatePickerDialog. Mais quoi que j'essaie, le résultat sur le dialogue n'est pas ce qu'il devrait être. Le doc dit qu'il devrait être le nombre de millisecondes depuis 1970. Donc ce code devrait fonctionner.Comment définir la date min et max dans un DatePickerDialog?

Qu'est-ce que j'ai raté?

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; 

Répondre

3

Le problème est TotalMilliseconds dépasse la valeur maximale d'un int peut contenir. Donc, jetez-le à long sera bien ce qui est réellement ce DatePicker.MaxDateexpects.

dialog.DatePicker.MaxDate = (long)(DateTime.Now.Date.AddYears(-8) - origin).TotalMilliseconds; 
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; 
     }