en résumé : Vous pouvez utiliser ce que DateTimeFormatInfo.GetEraName
/ GetAbbreviatedEraName
comme délimiteur, sans tenir compte de la casse. L'ordre est le suivant : jour, mois, année (facultatif).
Il semble que vous pouvez toujours utiliser l'actuel calendrier nom abrégé de l'ère o nom complet de l'époque comme délimiteur pour les jetons DateTime. Pour les cultures anglaises, c'est AD
o A.D.
Par exemple, pour les cultures allemandes, il s'agit de n. Chr.
.
var enCulture = new CultureInfo("en-GB");
System.Threading.Thread.CurrentThread.CurrentCulture = enCulture;
var fi = enCulture.DateTimeFormat;
int currentEra = enCulture.Calendar.GetEra(DateTime.Now);
var eraName = fi.GetEraName(currentEra);
var shortEra = fi.GetAbbreviatedEraName(currentEra);
var date = DateTime.Parse($"{shortEra}3{shortEra}08"); // AD or A.D. works
var deCulture = new CultureInfo("de-DE");
System.Threading.Thread.CurrentThread.CurrentCulture = deCulture;
fi = deCulture.DateTimeFormat;
currentEra = deCulture.Calendar.GetEra(DateTime.Now);
eraName = fi.GetEraName(currentEra);
shortEra = fi.GetAbbreviatedEraName(currentEra);
date = DateTime.Parse($"{shortEra}3{shortEra}08"); // n. Chr. works
Il est intéressant de noter qu'elle n'est pas sensible à la casse, donc ad
fonctionne également. Cela est documenté dans DateTimeFormatInfo.GetEra
:
Le nom de l'ère est le nom qu'un calendrier utilise pour faire référence à une période de temps. à partir d'un point fixe ou d'un événement. Par exemple, "A.D." ou "C.E." est le nom d'une époque. l'ère actuelle dans le calendrier grégorien. La comparaison avec eraName est insensible à la casse Par exemple, "A.D." est équivalent à "a.d.".
Le calendrier grégorien n'a qu'une seule ère, donc Calendar.GetEra(DateTime.Now)
n'est pas vraiment nécessaire. Je n'ai pas encore trouvé de documentation supplémentaire.
Voici quelques échantillons qui fonctionnent tous et qui seront analysés à Noël 2017 :
DateTime christmas = DateTime.Parse("ad25ad12ad2017ad");
christmas = DateTime.Parse("AD25ad12ad2017");
christmas = DateTime.Parse("25ad12ad2017AD");
christmas = DateTime.Parse("25ad12ad2017");
christmas = DateTime.Parse("A.D.25ad12ad2017");
christmas = DateTime.Parse("A.D.25ad12ad"); // current year is used
christmas = DateTime.Parse("A.D.25ad12"); // current year is used