9
votes

Comment comparer le mois-année avec DateParse

Je dois vérifier si une date (mois-année) est moins que la date réelle.

Je sais comment le faire uniquement avec une seule mois ou une année, comme P>

DateTime.Parse(o.MyDate).Year <= DateTime.Now.Year


4 commentaires

Quel est le problème avec ce que vous avez maintenant?


parse fonctionne toujours pour vous? analyser une fois, puis jouez avec les valeurs de l'instance analysée, seraient plus simples


Par exemple, je dois vérifier si 10-2011 (maintenant) est compris entre 01-2011 et 04-2012 ...


Pourquoi y a-t-il trois dates? Y a-t-il plus de dates que o.mydate et datetime.now?


5 Réponses :


7
votes
var date = DateTime.Parse(o.MyDate);
var currentTime = DateTime.Now;

// Each year can be subdivided in 12 parts (the months)
bool result = date.Year * 12 + date.Month <= currentTime.Year * 12 + currentTime.Month;

0 commentaires

11
votes

Si les années sont les mêmes, comparez les mois, si les années ne sont pas identiques, votre année doit être plus petite que maintenant: xxx

update:

Pour vérifier si YourDate est dans une certaine plage de temps, utilisez ceci: xxx


4 commentaires

J'ai mis à jour ma cible. Cela ne fonctionnera pas avec ce code. Désolé, n'était pas clair :) J'espère maintenant que vous pouvez comprendre ce que je recherche ...


Je sais comment faire cela en utilisant un mois ou une année unique. Mais n'est pas ce que j'ai demandé :) est si je peux vérifier directement l'année par mois ...


@markzzz: Ma réponse vérifie exactement ce que vous avez demandé. Il vérifie si une certaine date est dans une gamme de dates. Mois / année est une date aussi, cela équivaut à 01 / mois / année. S'il vous plaît essayez de comprendre le code à nouveau. J'ai mis à jour ma réponse pour le rendre plus explicite.


Oui, mais vérifiant la première année du mois. pas directement un mois d'année. C'est ce que j'ai demandé ... mais d'accord si je ne peux pas le faire, je vais utiliser votre propre code :)



4
votes
DateTime dateCheck = DateTime.Parse(o.MyDate);
bool result = ((Now.Month - dateCheck.Month) + 12 * (Now.Year - dateCheck.Year)) > 0

0 commentaires

-1
votes
Date date1 = new Date(2011, 1, 1, 0, 0, 0);
Date date2 = new Date(2011, 2, 1, 0, 0, 0);

int result = DateCompare(date1, date2);
if the result is < 0 then date1 < date2
if the result is 0 then date1 == date2
if the result is > 0 the date1 > date2

0 commentaires

0
votes
var date1 = new DateTime(year1, month1, 1);
var date2 = new DateTime(year2, month2, 1);

if(date1 < date2)...

0 commentaires