Parse months and day names and abbreviations.

This commit is contained in:
Daniel Stolt
2014-07-26 00:53:00 +02:00
parent 9a2b277aba
commit 5bee0705c2

View File

@@ -81,7 +81,8 @@ namespace Orchard.Framework.Localization.Services {
}
string IDateFormatter.FormatDate(DateParts parts, CultureInfo culture) {
// TODO: Mahsa should implement!
//var dateFormatString =
//return string.Format(dateFormatString,parts.Year,parts.Month,parts.Day);
throw new NotImplementedException();
}
@@ -92,8 +93,8 @@ namespace Orchard.Framework.Localization.Services {
private Dictionary<string, string> GetDateParseReplacements(CultureInfo culture) {
return new Dictionary<string, string>() {
{"dddd", "(?<day>[0-9]{4})"},
{"ddd", "(?<day>[0-9]{3})"},
{"dddd", String.Format("(?<day>{0})", String.Join("|", culture.DateTimeFormat.DayNames))},
{"ddd", String.Format("(?<day>{0})", String.Join("|", culture.DateTimeFormat.AbbreviatedDayNames))},
{"dd", "(?<day>[0-9]{2})"},
{"d", "(?<day>[0-9]{1,2})"},
{"MMMM", String.Format("(?<month>{0})", String.Join("|", culture.DateTimeFormat.MonthNames))},
@@ -133,6 +134,49 @@ namespace Orchard.Framework.Localization.Services {
};
}
private Dictionary<string, string> GetDateFormatReplacements(CultureInfo culture) {
return new Dictionary<string, string>() {
{"dddd", "{5:dddd}"},
{"ddd", "{6:ddd}"},
{"dd", "{2:00}"},
{"d", "{2:##}"},
{"MMMM", "{3:MMMM}"},
{"MMM", "{4:MMM}"},
{"MM", "{1:00}"},
{"M", "{1:##}"},
{"yyyyy", "{1:00000}"},
{"yyyy", "{1:0000}"},
{"yyy", "{1:000}"},
{"yy", "{1:00}"},
{"y", "{1:0}"}
};
}
private Dictionary<string, string> GetTimeFormatReplacements(CultureInfo culture) {
return new Dictionary<string, string>() {
{"HH", "(?<hour>[0-9]{2})"},
{"H", "(?<hour>[0-9]{1,2})"},
{"hh", "(?<hour>[0-9]{2})"},
{"h", "(?<hour>[0-9]{1,2})"},
{"MM", "(?<minute>[0-9]{2})"},
{"M", "(?<minute>[0-9]{1,2})"},
{"mm", "(?<minute>[0-9]{2})"},
{"m", "(?<minute>[0-9]{1,2})"},
{"ss", "(?<second>[0-9]{2})"},
{"s", "(?<second>[0-9]{1,2})"},
{"f", "(?<millisecond>[0-9]{1})"},
{"ff", "(?<millisecond>[0-9]{2})"},
{"fff", "(?<millisecond>[0-9]{3})"},
{"ffff", "(?<millisecond>[0-9]{4})"},
{"fffff", "(?<millisecond>[0-9]{5})"},
{"ffffff", "(?<millisecond>[0-9]{6})"},
{"tt", String.Format("\\s*(?<AMPM>{0}|{1})\\s*", culture.DateTimeFormat.AMDesignator, culture.DateTimeFormat.PMDesignator)},
{"t", String.Format("\\s*(?<AMPM>{0}|{1})\\s*", culture.DateTimeFormat.AMDesignator, culture.DateTimeFormat.PMDesignator)},
{" tt", String.Format("\\s*(?<AMPM>{0}|{1})\\s*", culture.DateTimeFormat.AMDesignator, culture.DateTimeFormat.PMDesignator)},
{" t", String.Format("\\s*(?<AMPM>{0}|{1})\\s*", culture.DateTimeFormat.AMDesignator, culture.DateTimeFormat.PMDesignator)}
};
}
private string ReplaceAll(string original, IDictionary<string, string> replacements) {
var pattern = String.Format("{0}", String.Join("|", replacements.Keys.ToArray()));
return Regex.Replace(original, pattern, (match) => replacements[match.Value]);