Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Les méthodes DateOnly et TimeOnlyTryParse et TryParseExact lèvent désormais une ArgumentException lorsqu'on fournit des valeurs DateTimeStyles ou des spécificateurs de format non valides. Cela aligne leur comportement avec d’autres TryParse API dans .NET.
Version introduite
.NET 11 Preview 2
Comportement antérieur
Auparavant, le passage de valeurs ou de spécificateurs de format non valides DateTimeStyles à DateOnly.TryParse, DateOnly.TryParseExactou TimeOnly.TryParseTimeOnly.TryParseExact provoquait le retour false des méthodes sans lever d’exception.
using System;
using System.Globalization;
bool result = DateOnly.TryParseExact(
"2023-10-15",
"yyyy-MM-dd",
CultureInfo.InvariantCulture,
(DateTimeStyles)999, // Invalid DateTimeStyles value
out DateOnly date);
Console.WriteLine(result); // Output: False
Nouveau comportement
À partir de .NET 11, passer des valeurs non valides ou des spécificateurs de format à ces méthodes génère une exception ArgumentException. L’exception inclut des détails sur l’argument non valide, tel que le nom du paramètre.
using System;
using System.Globalization;
try
{
bool result = DateOnly.TryParseExact(
"2023-10-15",
"yyyy-MM-dd",
CultureInfo.InvariantCulture,
(DateTimeStyles)999, // Invalid DateTimeStyles value
out DateOnly date);
}
catch (ArgumentException ex)
{
Console.WriteLine(ex.Message);
// Output: "The value '999' is not valid for DateTimeStyles. (Parameter 'style')"
}
Type de changement cassant
Ce changement est un changement de comportement.
Raison du changement
Cette modification aligne le comportement des méthodes d’analyse DateOnly et TimeOnly avec celui des autres API TryParse dans .NET, qui lèvent des exceptions pour les arguments non valides. Le comportement précédent de retour false silencieux pour les arguments non valides peut masquer les erreurs de programmation et rendre le débogage plus difficile.
Action recommandée
Passez en revue votre utilisation de DateOnly.TryParse, DateOnly.TryParseExact, TimeOnly.TryParse, et TimeOnly.TryParseExact afin de vous assurer que des spécificateurs de format et des valeurs DateTimeStyles valides sont passés. Si des arguments non valides sont possibles dans vos chemins de code, encapsulez les appels dans un try-catch bloc pour gérer .ArgumentException
using System;
using System.Globalization;
try
{
bool result = DateOnly.TryParseExact(
"2023-10-15",
"yyyy-MM-dd",
CultureInfo.InvariantCulture,
(DateTimeStyles)999, // Invalid DateTimeStyles value
out DateOnly date);
}
catch (ArgumentException ex)
{
Console.WriteLine($"Error: {ex.Message}");
// Handle the exception as needed
}
API affectées
- System.DateOnly.TryParse(String, DateOnly)
- System.DateOnly.TryParse(String, IFormatProvider, DateTimeStyles, DateOnly)
- System.DateOnly.TryParseExact(String, String, IFormatProvider, DateTimeStyles, DateOnly)
- System.DateOnly.TryParseExact(String, String[], IFormatProvider, DateTimeStyles, DateOnly)
- System.TimeOnly.TryParse(String, TimeOnly)
- System.TimeOnly.TryParse(String, IFormatProvider, DateTimeStyles, TimeOnly)
- System.TimeOnly.TryParseExact(String, String, IFormatProvider, DateTimeStyles, TimeOnly)
- System.TimeOnly.TryParseExact(String, String[], IFormatProvider, DateTimeStyles, TimeOnly)