Si nous utilisons la méthode ParseExact
pour exact l'analyse de la date et de l'heure à l'aide d'un format spécifié, pourquoi Avons-nous besoin de fournir un objet IFormatProvider? quel est le point derrière cela?
Par exemple:
DateTime.ParseExact(dateString, format, provider);
Pourquoi avons-nous besoin du provider
ici?
pourquoi devons-nous fournir un objet IFormatProvider? quel est le point derrière cela?
Il permet des options spécifiques à la culture. En particulier:
:
ou /
dans votre modèle, ce qui signifie des caractères propres à la culture pour le séparateur d'heure ou de dateÀ titre d'exemple du dernier point, considérons la même chaîne exacte et le même format, interprétés dans la culture des États-Unis ou de l'Arabie saoudite:
using System;
using System.Globalization;
class Test
{
static void Main()
{
CultureInfo us = new CultureInfo("en-US");
CultureInfo sa = new CultureInfo("ar-SA");
string text = "1434-09-23T15:16";
string format = "yyyy'-'MM'-'dd'T'HH':'mm";
Console.WriteLine(DateTime.ParseExact(text, format, us));
Console.WriteLine(DateTime.ParseExact(text, format, sa));
}
}
Lors de l'analyse syntaxique avec la culture américaine, le calendrier grégorien est utilisé - alors que lorsqu'il est analysé avec la culture saoudienne, le calendrier Um Al Qura est utilisé, où 1434 est l'année dans laquelle nous sommes actuellement (au moment où j'écris cette réponse).