Quand je reçois la propriété DateTime.Hour, j'ai toujours le temps de 24 heures (dedon 18h me donnerait 18). p>
Comment puis-je obtenir le temps de "12 heures" de sorte que 18h00 me donne juste 6. p>
Je peux évidemment faire le chèque moi-même mais je suppose qu'il y a une fonction intégrée pour cela. P>
6 Réponses :
Que diriez-vous: qui donnera 0-11 bien sûr ... voulez-vous 1-12? Si oui: p> Je ne pense pas em> Il y a quelque chose de plus simple intégré ... p> p>
Il n'y a pas de fonction intégrée, principalement parce que vous ne devriez pas en avoir besoin: P>
En dehors de cela, le calcul mathématique est assez simple et déjà disponible dans d'autres réponses ici. P>
Je fais des comparaisons d'heure par rapport à un entier que je reçois d'une autre source de données (qui ne vient évidemment que pendant 12 heures)
Ne devriez-vous pas convertir cette autre source à une date d'heure? Comparer aveuglément 12 heures de temps est dangereuse.
datetime.now.tostring ("HH"); -> Utiliser ce problème, vous obtiendrez "06" pendant 18h. p>
C'est la réponse la plus simple imo.
Je ne connais aucune méthode intégrée, mais vous pouvez toujours ajouter une méthode d'extension pour y accomplir.
Bien sûr, vous pouvez toujours remplacer le code par la façon dont vous voulez y accomplir. P >
public static class Extension
{
public static int GetTwelveCycleHour(this DateTime dateTime)
{
if (dateTime.Hour > 12)
{
return dateTime.Hour - 12;
}
return dateTime.Hour;
}
}
J'ai réalisé qu'après avoir posté ma réponse, j'ai ajouté le commentaire "Bien sûr, vous pouvez toujours remplacer le code avec la façon dont vous voulez y accomplir." Mon point principal était que cette question me pose sonne comme un bon candidat pour une méthode d'extension.
Je ne voulais pas simplement déchirer la réponse de Jon Skeet dans la mienne, alors je n'ai ajouté que le commentaire et je n'ai pas changé le code.
Qu'en est-il de simplement:
public static int GetTwelveCycleHour(this DateTime dateTime)
{
return Convert.ToInt32(dateTime.ToString("h"));
}
Formatage et analyse? Cela fera l'affaire, mais est inutilement inutile de cycles de la CPU. Enregistrer le formatage pour afficher la sortie et analyser pour la manipulation de la saisie de l'utilisateur. Vous êtes beaucoup mieux avec la réponse de Jon Skeet.
Pas sûr de la version C # que vous utilisez mais dans le C # 5, cela jette une exception de format invalide. Il devrait s'agir de tosturer ("% h");
Je pensais que la réponse la plus pratique a été soumise par Jon Skeet. Le ci-dessous est le même mais converti en Visual Basic. J'aime que les choses soient super faciles. Il m'a fallu quelques-uns pour comprendre le C # à la conversion de base visuelle. J'ai également inclus des choses «supplémentaires» aussi. J'espère que cela sauve l'heure de quelqu'un d'autre.
Visual Basic fort>
P> Dim stringDate = DateTime.Now().Year &
DateTime.Now().Month.ToString("00") &
DateTime.Now().Day.ToString("00") & "_" &
(((DateTime.Now().Hour + 11) Mod 12) + 1).ToString("00") &
DateTime.Now().Minute.ToString("00")
Vous pouvez simplement lui demander, ou voulez-vous dire dentetim e i>?
Si vous faites cela, comment pouvez-vous comparer entre les heures de nuit et la nuit?
Je n'ai pas besoin de pour ce contrôle. . . Comme il existe des zones de texte séparées pour "heure" "min" "am / pm". Je vais déplacer cela à un contrôle de calendrier pour en faire simple car il s'agit de tout le code hérité