Je veux mettre ma culture d'application sur ce que je veux, quels que soient la culture du système d'exploitation. Pour obtenir ceci, j'ai utilisé la classe cultureInfo avec "FA-IR" comme culture, mais il a utilisé le "grégoriancalendar" comme calendrier par défaut et non la classe de Persiancalendar .NET. J'ai donc essayé de dériver une nouvelle classe de CultureInfo pour mettre en œuvre ma culture client:
public override Calendar[] OptionalCalendars { get { return base.OptionalCalendars.Concat<Calendar>(new Calendar[1] { new PersianCalendar() }).ToArray<Calendar>(); } }
3 Réponses :
Essayez d'utiliser un culTureAndregionInfobuilder < / a>. Selon le MSDN, il s'agit de la manière préférée de créer personnalisé cultures . p>
EDIT: Si cela échoue, je suppose que Un contournement sale à l'aide de la réflexion est le seul moyen de créer une telle culture personnalisée. p>
Merci, je vais essayer les deux sens dès que possible. Mais je préfère ne pas utiliser de réflexion ici, car c'est vraiment une solution de contournement sale.
J'ai essayé le constructeur, il y a quelques limitations dans la structure .NET pour utiliser Persiancalendar, mais ces deux solutions semblent fonctionner correctement pour mon problème. La manière de réflexion fonctionne également, mais certains comportements étranges se produisent. Après avoir appliqué une truc de réflexion et définir la nouvelle culture, lorsque vous appelez la touche d'une instance DateTime, vous obtenez une date persane, mais si vous obtenez des propriétés d'année, de mois et de jour séparément, vous aurez toutes des dates grégoriennes.
Malheureusement, ce n'est pas possible. Il a été déposé comme un bogue afin que Microsoft soit au courant de ce problème. Voir http://connect.microsoft.com/visualstudio/feedback/Détails/ 507262 / persan-cultureinfo p>
Oui, je connaissais ces limitations. J'ai donc commencé cette question pour trouver un moyen de le mettre en œuvre en hérité de la propriété de cultureInfo et de la disponibilité de la propriété du calendrier.
Cinq ans ont passé et les choses ont changé depuis. Microsoft a Ouvrez Sourced . NET , et maintenant, il prend en charge J'ai essayé l'extrait suivant avec .NET CORE 1.0 et cela fonctionne simplement bien: p> Persiancalendar code> hors de la boîte.
Peut-être que ce lien vous aide plus de compatriote :) CODEPROJECT.COM /Articles/17495/Persian-DaTetime