vérification de la plage de temps
J'ai une méthode qui interroge active directory, et renvoie la valeur de la Dernière Réinitialisation de Mot de passe dans une variable locale. Je suis en train de comparer cette valeur à la date et l'heure actuelles, et de vérifier si elle a été moins de 24 heures. Je pense que je suis proche, mais ne peuvent pas sembler obtenir que cela fonctionne.
Grâce,
Jason
string passwordLastSet = string.Empty;
passwordLastSet = DateTime.FromFileTime((Int64)(result.Properties["PwdLastSet"][0])).ToString();
public string lastReset(DateTime pwordLastReset)
{
if (DateTime.Now.AddHours(24) <= passwordLastSet)
{
return "try again later";
}
else
{
return "all is good";
}
}
OriginalL'auteur Jason | 2011-02-10
Vous devez vous connecter pour publier un commentaire.
Ce:
devrait être
OriginalL'auteur BrokenGlass
Ce code presque écrit lui-même.
Note de la façon dont le code se lit exactement comme vous l'avez indiqué en anglais.
OriginalL'auteur jason
Comment (en supposant que j'ai lu vos intentions correctement):
OriginalL'auteur Rob
Vous pouvez également utiliser TotalDays < 1
OriginalL'auteur Vlad Bezden
vous de comparer une variable de chaîne et d'un variable datetime il n'est pas possible de comparer
changer votre chaîne de type DateTime
si vous voulez comparer avec le temps actuel
il suffit d'utiliser cette
si vous voulez vérifier plus de 24 changer à la fois de temps et de la comparer
DateTime.FromFileTime((Int64)(le résultat.Propriétés["PwdLastSet"][0])).ToString(); cette ligne est à l'origine de l'erreur
changer de type DateTime.FromFileTime((Int64)(le résultat.Propriétés["PwdLastSet"][0]));
Je viens de réaliser que la réponse à mon propre commentaire, j'ai juste besoin de supprimer .ToString
OriginalL'auteur Nighil
Être pédant:
Vous devez vérifier pour des cas particuliers avant de se convertir à DateTime - par exemple pwdLastSet peut être zéro, de sorte que vous devriez vérifier avant de tenter de les convertir.
pwdLastSet
est stocké comme UTC - de sorte que la conversion de l'heure locale à l'aide deDateTime.FromFileTime
pourrait revenir l'ambiguïté d'un temps.De sorte qu'il serait préférable d'utiliser
DateTime.FromFileTimeUtc
et de les comparer avecDateTime.UtcNow
.Selon exactement ce que vous voulez atteindre, vous pouvez également vouloir vérifier la userAccountControl drapeaux - quelque chose comme ce qui suit (non testé):
OriginalL'auteur Joe
essayer
DateTime.Now.AddHours(-24) <= passwordLastSet
que vous voulez simuler que maintenant est de 24 heures dans le passé, pas dans l'avenirOriginalL'auteur Naveed Ahmad