Conversie data pentru cultura romana (ro-RO)
Vreau sa convertesc date calendaristice din cultura romana (ro-RO) din string in DateTime. Datele sunt de genul 8 Oct 2008, 9 Oct 2008, 12 Dec 2008. DateTime.TryParseExact accepta formatul "d MMM yyyy", numai ca pentru cultura romana datele trebuie sa fie de forma 8 Oct. 2008, 9 Oct. 2008, 12 Dec. 2008 (cu punct dupa luna). Obtin expresia regulata pentru gasirea lunii din data, iar dupa luna inserez punctul.
Pentru asta am nevoie de un MatchEvaluator care e un delegat cu signatura delegate string MatchEvaluator(Match m)
Evolutia pointerilor la functii incepand de la C# 1.0 pana la C# 3.0 e una pozitiva, in sensul claritatii codului. Daca in 1.0 trebuia sa scrii efectiv metoda ca membru al unei clase, iar in 2.0 nu e tocmai naturala inserararea codului printre parametri, in 3.0 expresiile lambda simplifica mult tehnica.
Pentru asta am nevoie de un MatchEvaluator care e un delegat cu signatura delegate string MatchEvaluator(Match m)
static string Evaluator(Match match) {
return match.ToString() + ".";
}
Evolutia pointerilor la functii incepand de la C# 1.0 pana la C# 3.0 e una pozitiva, in sensul claritatii codului. Daca in 1.0 trebuia sa scrii efectiv metoda ca membru al unei clase, iar in 2.0 nu e tocmai naturala inserararea codului printre parametri, in 3.0 expresiile lambda simplifica mult tehnica.
var strDate = "8 Oct 2008";
var regForReplace = new Regex(@"[a-zA-Z]{3}");
//C# 1.1 delegat
var sDate = regForReplace.Replace(strDate, Evaluator);
Console.WriteLine(sDate); // 8 Oct. 2008
//C# 2.0 metoda anonima
var aDate = regForReplace.Replace(strDate, delegate (Match match ){
return m.ToString() + ".";
});
Console.WriteLine(aDate); // 8 Oct. 2008
//C# 3.0 expresie lambda
var lDate = regForReplace.Replace(strDate, match => match.ToString() + ".");
Console.WriteLine(lDate); // 8 Oct. 2008
DateTime date;
if (DateTime.TryParseExact(lDate , "d MMM yyyy",
CultureInfo.GetCultureInfo("ro-RO"),
DateTimeStyles.None, out date))
{
Console.WriteLine(date); //08.10.2008 00:00:00
}
Comments
Post a Comment