Après avoir essayé de coller des chaînes de date arabes dans ma réponse que je l'ai découvert que les caractères sont parfois réorganisés en raison de problèmes RTL. En particulier, un DateTime
formaté en utilisant le format d-MMMM-yyyy hh:mm:ss tt
aura la partie initiale d-
déplacée vers la fin (à gauche), ce qui correspond exactement à la chaîne de votre question (par ex. De droite à gauche: mois, année, heure, AM/PM spécificateur et puis jour qui semble bizarre). Donc, je suppose que votre chaîne utilise vraiment le format plus naturel d-MMMM-yyyy hh:mm:ss tt
.
Le problème que vous rencontrez est que vous devez utiliser le bon calendrier. Vous avez essayé d'utiliser la culture ar-SA
mais le calendrier par défaut est un calendrier Hirji. Vous devez utiliser un calendrier grégorien avec les noms de mois corrects. Pour changer le calendrier, vous devez créer un nouveau CultureInfo
et choisir le bon calendrier. Dans votre cas, il semble que vous devez utiliser le calendrier « Localized » à l'indice 5 de la propriété OptionalCalendars
:
var cultureInfo = CultureInfo.CreateSpecificCulture("ar-SA");
cultureInfo.DateTimeFormat.Calendar = cultureInfo.OptionalCalendars[5];
Vous pouvez ensuite analyser votre chaîne en utilisant ce code (où je crée la chaîne d'une manière qui ne change pas quand je le coller dans mon navigateur):
var dateTimeString = new String(new[] {
'1',
'4',
'-',
'ي',
'و',
'ل',
'ي',
'و',
'-',
'2',
'0',
'1',
'5',
' ',
'0',
'4',
':',
'4',
'4',
':',
'5',
'1',
' ',
'م'
});
var dateTime = DateTime.Parse(dateTimeString, cultureInfo);
Le DateTime
résultant est:
2015-07-14T16:44:51
Si vous souhaitez utiliser DateTime.ParseExact
le format est d-MMMM-yyyy hh:mm:ss tt
:
var dateTime = DateTime.ParseExact(dateTimeString, "d-MMMM-yyyy hh:mm:ss tt", cultureInfo);
Vous devriez également envisager d'utiliser DateTime.TryParse
ou DateTime.TryParseExact
pour un meilleur flux de code si vous rencontrez une chaîne au format non valide.
ok donc vous voulez dire que cela va convertir: DateTime.ParseExact (latestTables.Result.StaticTable [i] .dtUpdTime, "dd - MMM hh: mm: ss -yyyy t", CultureInfo.InvariantCulture) ; – Yawar
Non sa conversion par le code ci-dessus – Yawar
Avez-vous convertir le texte avant d'exécuter la fonction parseExact? – tichra