web-dev-qa-db-fra.com

C # compare deux DateTimes

J'ai deux dates:

DateTime date_of_submission = Convert.ToDateTime(DateTime.Now.ToString("MM/dd/yyyy"));
DateTime _effective_date = Convert.ToDateTime(TextBox32.Text);

Désormais, la date d'effet ne peut pas être supérieure à 90 jours à compter de la date de soumission.

Comment puis-je faire cette comparaison?

Une méthode qui me vient à l’esprit est une conversion naïve des dates avec des chaînes, puis de comparer jj, mm, aaaa et de vérifier si les deux dates se trouvent à moins de 90 jours l’une de l’autre. Mais je crois qu'il doit y avoir une meilleure solution que celle.

13
Philo

Vous pouvez soustraire deux dates et obtenir un TimeSpan :

TimeSpan difference = _effective_date - date_of_submission;
if(difference.TotalDays > 90)
{
  // Bingo!
}
24
Sean
var days = (_effective_date - date_of_submission).Days;
4
Christian Hayter

Quelque chose comme...

        TimeSpan difference = _effective_date - date_of_submission;
        double days = difference.TotalDays;

        if (days > 0 && days <= 90)
        {
            //valid
        }
3
terryt

Vous pouvez comparer deux valeurs datetime l'une à l'autre comme vous le faites normalement.

Donc, vous pouvez faire ce qui suit: -

if(date_of_effective_date.CompareTo(date_of_submission_date.AddDays(90)) <= 0)
{
 //Correct
}
1
Max

Bien qu'il existe plusieurs solutions efficaces, il pourrait être une solution pour les futurs chercheurs 

DateTime date_of_submission = Convert.ToDateTime(DateTime.Now.ToString("MM/dd/yyyy"));
DateTime _effective_date = Convert.ToDateTime(TextBox32.Text);

DateTime lastPossibleEffectiveDate = _effective_date.AddDays(90);

int result = DateTime.Compare(_effective_date,lastPossibleEffectiveDate);
if (result <= 0)
    Console.WriteLine("Valid Date");
else if (result > 0 )
    Console.WriteLine("Not Valid effective date");
0
Abdur Rahim

Ceci est un exemple pour comparer datetime. vous pouvez changer selon vos besoins

 DateTime dtFromDate = DateTime.ParseExact(TextBoxFromDate.Text, "dd/MM/yyyy",
                                                   CultureInfo.InvariantCulture);
 DateTime dtToDate = DateTime.ParseExact(TextBoxToDate.Text, "dd/MM/yyyy",
                                                   CultureInfo.InvariantCulture);
 TimeSpan difference = dtFromDate - dtToDate;
 double days = difference.TotalDays;

 if (days > 0)
 {
   DivFormError.InnerText = "“From Date” cannot be greater than “To Date”";
 }
0
Chandan Kumar