Historique de la question :
Le travail avec les dates et les heures a toujours été un aspect distinct de la programmation en Visual Basic — des anciens types Variant/Date dans VB6 aux structures Date/DateTime dans VB.NET. L'apparition de la classe DateTime a permis de manipuler les dates plus facilement, d'obtenir les valeurs système, de calculer des intervalles et de formater les dates correctement.
Problème :
Des erreurs de conversion de chaînes en DateTime se produisent souvent (surtout avec différentes cultures), une mauvaise gestion des fuseaux horaires, et un formatage incorrect pour l'affichage à l'utilisateur ou l'envoi au serveur.
Solution :
DateTime est une structure permettant de stocker la date et l'heure, d'effectuer des opérations arithmétiques, des comparaisons, ainsi que de les convertir dans le format souhaité. Pour analyser les dates sous forme de chaîne, on utilise Parse, TryParse, et pour le formatage — la méthode ToString avec une chaîne de format et (si besoin) CultureInfo.
Exemple de code :
Dim today As DateTime = DateTime.Now Dim birth As DateTime = New DateTime(1990, 1, 1) Dim formatted As String = today.ToString("yyyy-MM-dd HH:mm") Dim parsed As DateTime If DateTime.TryParse("15/06/2024", parsed) Then Console.WriteLine(parsed.ToString()) End If
Caractéristiques clés :
1. Quelle est la valeur de DateTime.MinValue ?
DateTime.MinValue est la date 01.01.0001 00:00:00 (et non, par exemple, 01.01.1970 comme en UNIX). Utilisez-le avec prudence lors de la vérification "une valeur est-elle définie".
2. Peut-on stocker "24 heures sans temps" dans DateTime ?
Non, le type DateTime inclut toujours des valeurs de temps. Si vous devez stocker uniquement la date, assignez le temps à "00:00:00" et utilisez uniquement le format de date lors de l'affichage.
3. Comment comparer correctement les dates en ignorant le temps ?
Pour comparer seulement la partie date, éliminez le temps :
Dim aDate As DateTime = DateTime.Now.Date Dim bDate As DateTime = someOtherDate.Date If aDate = bDate Then ...
L'application cliente accepte la date de naissance de l'utilisateur via TextBox et l'analyse directement via DateTime.Parse(textBox.Text). Les utilisateurs européens et américains saisissent des dates dans différents formats. En conséquence, des dates de naissance incorrectes ou des exceptions se produisent.
Avantages :
Inconvénients :
La saisie de la date se fait via DateTimePicker ou à l'aide de TryParseExact(textBox.Text, "dd.MM.yyyy", CultureInfo.InvariantCulture, ...). Le code prévoit des mécanismes de repli et une validation précise.
Avantages :
Inconvénients :