/// <summary> /// Creates a list of all valid date time format parts /// </summary> private static void CreateDateTimeFormatParts() { DateTimeFormatsParts.Add("yy", new DateTimeFormatPartTO("yy", false, "Year in 2 digits: 08")); DateTimeFormatPartOptions.Add("yy", new List<IDateTimeFormatPartOptionTO> { new DateTimeFormatPartOptionTO(2, IsTextNumeric, true, null, AssignYears) }); DateTimeFormatsParts.Add("yyyy", new DateTimeFormatPartTO("yyyy", false, "Year in 4 digits: 2008")); DateTimeFormatPartOptions.Add("yyyy", new List<IDateTimeFormatPartOptionTO> { new DateTimeFormatPartOptionTO(4, IsTextNumeric, true, null, AssignYears) }); DateTimeFormatsParts.Add("mm", new DateTimeFormatPartTO("mm", false, "Month in 2 digits: 03")); DateTimeFormatPartOptions.Add("mm", new List<IDateTimeFormatPartOptionTO> { new DateTimeFormatPartOptionTO(2, IsNumberMonth, true, null, AssignMonths) }); DateTimeFormatsParts.Add("m", new DateTimeFormatPartTO("m", false, "Month in single digit: 3")); DateTimeFormatPartOptions.Add("m", new List<IDateTimeFormatPartOptionTO> { new DateTimeFormatPartOptionTO(2, IsNumberMonth, true, null, AssignMonths), new DateTimeFormatPartOptionTO(1, IsNumberMonth, true, null, AssignMonths), }); DateTimeFormatsParts.Add("M", new DateTimeFormatPartTO("M", false, "Month text abbreviated: Mar")); DateTimeFormatPartOptions.Add("M", new List<IDateTimeFormatPartOptionTO> { new DateTimeFormatPartOptionTO( CultureInfo.CurrentCulture.DateTimeFormat.AbbreviatedMonthNames[0].Length, IsTextJanuary, false, 1, AssignMonths), new DateTimeFormatPartOptionTO( CultureInfo.CurrentCulture.DateTimeFormat.AbbreviatedMonthNames[1].Length, IsTextFebuary, false, 2, AssignMonths), new DateTimeFormatPartOptionTO( CultureInfo.CurrentCulture.DateTimeFormat.AbbreviatedMonthNames[2].Length, IsTextMarch, false, 3, AssignMonths), new DateTimeFormatPartOptionTO( CultureInfo.CurrentCulture.DateTimeFormat.AbbreviatedMonthNames[3].Length, IsTextApril, false, 4, AssignMonths), new DateTimeFormatPartOptionTO( CultureInfo.CurrentCulture.DateTimeFormat.AbbreviatedMonthNames[4].Length, IsTextMay, false, 5, AssignMonths), new DateTimeFormatPartOptionTO( CultureInfo.CurrentCulture.DateTimeFormat.AbbreviatedMonthNames[5].Length, IsTextJune, false, 6, AssignMonths), new DateTimeFormatPartOptionTO( CultureInfo.CurrentCulture.DateTimeFormat.AbbreviatedMonthNames[6].Length, IsTextJuly, false, 7, AssignMonths), new DateTimeFormatPartOptionTO( CultureInfo.CurrentCulture.DateTimeFormat.AbbreviatedMonthNames[7].Length, IsTextAugust, false, 8, AssignMonths), new DateTimeFormatPartOptionTO( CultureInfo.CurrentCulture.DateTimeFormat.AbbreviatedMonthNames[8].Length, IsTextSeptember, false, 9, AssignMonths), new DateTimeFormatPartOptionTO( CultureInfo.CurrentCulture.DateTimeFormat.AbbreviatedMonthNames[9].Length, IsTextOctober, false, 10, AssignMonths), new DateTimeFormatPartOptionTO( CultureInfo.CurrentCulture.DateTimeFormat.AbbreviatedMonthNames[10].Length, IsTextNovember, false, 11, AssignMonths), new DateTimeFormatPartOptionTO( CultureInfo.CurrentCulture.DateTimeFormat.AbbreviatedMonthNames[11].Length, IsTextDecember, false, 12, AssignMonths), }); DateTimeFormatsParts.Add("MM", new DateTimeFormatPartTO("MM", false, "Month text in full: March")); DateTimeFormatPartOptions.Add("MM", new List<IDateTimeFormatPartOptionTO> { new DateTimeFormatPartOptionTO(CultureInfo.CurrentCulture.DateTimeFormat.MonthNames[0].Length, IsTextJanuary, false, 1, AssignMonths), new DateTimeFormatPartOptionTO(CultureInfo.CurrentCulture.DateTimeFormat.MonthNames[1].Length, IsTextFebuary, false, 2, AssignMonths), new DateTimeFormatPartOptionTO(CultureInfo.CurrentCulture.DateTimeFormat.MonthNames[2].Length, IsTextMarch, false, 3, AssignMonths), new DateTimeFormatPartOptionTO(CultureInfo.CurrentCulture.DateTimeFormat.MonthNames[3].Length, IsTextApril, false, 4, AssignMonths), new DateTimeFormatPartOptionTO(CultureInfo.CurrentCulture.DateTimeFormat.MonthNames[4].Length, IsTextMay, false, 5, AssignMonths), new DateTimeFormatPartOptionTO(CultureInfo.CurrentCulture.DateTimeFormat.MonthNames[5].Length, IsTextJune, false, 6, AssignMonths), new DateTimeFormatPartOptionTO(CultureInfo.CurrentCulture.DateTimeFormat.MonthNames[6].Length, IsTextJuly, false, 7, AssignMonths), new DateTimeFormatPartOptionTO(CultureInfo.CurrentCulture.DateTimeFormat.MonthNames[7].Length, IsTextAugust, false, 8, AssignMonths), new DateTimeFormatPartOptionTO(CultureInfo.CurrentCulture.DateTimeFormat.MonthNames[8].Length, IsTextSeptember, false, 9, AssignMonths), new DateTimeFormatPartOptionTO(CultureInfo.CurrentCulture.DateTimeFormat.MonthNames[9].Length, IsTextOctober, false, 10, AssignMonths), new DateTimeFormatPartOptionTO(CultureInfo.CurrentCulture.DateTimeFormat.MonthNames[10].Length, IsTextNovember, false, 11, AssignMonths), new DateTimeFormatPartOptionTO(CultureInfo.CurrentCulture.DateTimeFormat.MonthNames[11].Length, IsTextDecember, false, 12, AssignMonths), }); DateTimeFormatsParts.Add("d", new DateTimeFormatPartTO("d", false, "Day of month in single digit: 6")); DateTimeFormatPartOptions.Add("d", new List<IDateTimeFormatPartOptionTO> { new DateTimeFormatPartOptionTO(2, IsNumberDay, true, null, AssignDays), new DateTimeFormatPartOptionTO(1, IsNumberDay, true, null, AssignDays) }); DateTimeFormatsParts.Add("dd", new DateTimeFormatPartTO("dd", false, "Day of month in 2 digits: 06")); DateTimeFormatPartOptions.Add("dd", new List<IDateTimeFormatPartOptionTO> { new DateTimeFormatPartOptionTO(2, IsNumberDay, true, null, AssignDays) }); DateTimeFormatsParts.Add("DW", new DateTimeFormatPartTO("DW", false, "Day of Week in full: Thursday")); DateTimeFormatPartOptions.Add("DW", new List<IDateTimeFormatPartOptionTO> { new DateTimeFormatPartOptionTO(CultureInfo.CurrentCulture.DateTimeFormat.DayNames[0].Length, IsTextSunday, false, 7, AssignDaysOfWeek), new DateTimeFormatPartOptionTO(CultureInfo.CurrentCulture.DateTimeFormat.DayNames[1].Length, IsTextMonday, false, 1, AssignDaysOfWeek), new DateTimeFormatPartOptionTO(CultureInfo.CurrentCulture.DateTimeFormat.DayNames[2].Length, IsTextTuesday, false, 2, AssignDaysOfWeek), new DateTimeFormatPartOptionTO(CultureInfo.CurrentCulture.DateTimeFormat.DayNames[3].Length, IsTextWednesday, false, 3, AssignDaysOfWeek), new DateTimeFormatPartOptionTO(CultureInfo.CurrentCulture.DateTimeFormat.DayNames[4].Length, IsTextThursday, false, 4, AssignDaysOfWeek), new DateTimeFormatPartOptionTO(CultureInfo.CurrentCulture.DateTimeFormat.DayNames[5].Length, IsTextFriday, false, 5, AssignDaysOfWeek), new DateTimeFormatPartOptionTO(CultureInfo.CurrentCulture.DateTimeFormat.DayNames[6].Length, IsTextSaturday, false, 6, AssignDaysOfWeek), }); DateTimeFormatsParts.Add("dW", new DateTimeFormatPartTO("dW", false, "Day of Week text abbreviated: Thu")); DateTimeFormatPartOptions.Add("dW", new List<IDateTimeFormatPartOptionTO> { new DateTimeFormatPartOptionTO( CultureInfo.CurrentCulture.DateTimeFormat.AbbreviatedDayNames[0].Length, IsTextSunday, false, 7, AssignDaysOfWeek, 6), new DateTimeFormatPartOptionTO( CultureInfo.CurrentCulture.DateTimeFormat.AbbreviatedDayNames[1].Length, IsTextMonday, false, 1, AssignDaysOfWeek, 6), new DateTimeFormatPartOptionTO( CultureInfo.CurrentCulture.DateTimeFormat.AbbreviatedDayNames[2].Length, IsTextTuesday, false, 2, AssignDaysOfWeek, 7), new DateTimeFormatPartOptionTO( CultureInfo.CurrentCulture.DateTimeFormat.AbbreviatedDayNames[3].Length, IsTextWednesday, false, 3, AssignDaysOfWeek, 9), new DateTimeFormatPartOptionTO( CultureInfo.CurrentCulture.DateTimeFormat.AbbreviatedDayNames[4].Length, IsTextThursday, false, 4, AssignDaysOfWeek, 8), new DateTimeFormatPartOptionTO( CultureInfo.CurrentCulture.DateTimeFormat.AbbreviatedDayNames[5].Length, IsTextFriday, false, 5, AssignDaysOfWeek, 6), new DateTimeFormatPartOptionTO( CultureInfo.CurrentCulture.DateTimeFormat.AbbreviatedDayNames[6].Length, IsTextSaturday, false, 6, AssignDaysOfWeek, 7), }); DateTimeFormatsParts.Add("dw", new DateTimeFormatPartTO("dw", false, "Day of Week number: 4")); DateTimeFormatPartOptions.Add("dw", new List<IDateTimeFormatPartOptionTO> { new DateTimeFormatPartOptionTO(1, IsNumberDayOfWeek, true, null, AssignDaysOfWeek), }); DateTimeFormatsParts.Add("dy", new DateTimeFormatPartTO("dy", false, "Day of year: 66")); DateTimeFormatPartOptions.Add("dy", new List<IDateTimeFormatPartOptionTO> { new DateTimeFormatPartOptionTO(3, IsNumberDayOfYear, true, null, AssignDaysOfYear), new DateTimeFormatPartOptionTO(2, IsNumberDayOfYear, true, null, AssignDaysOfYear), new DateTimeFormatPartOptionTO(1, IsNumberDayOfYear, true, null, AssignDaysOfYear) }); DateTimeFormatsParts.Add("ww", new DateTimeFormatPartTO("ww", false, "Week of year: 09")); DateTimeFormatPartOptions.Add("ww", new List<IDateTimeFormatPartOptionTO> { new DateTimeFormatPartOptionTO(2, IsNumberWeekOfYear, true, null, AssignWeeks), }); DateTimeFormatsParts.Add("w", new DateTimeFormatPartTO("w", false, "Week of year: 9")); DateTimeFormatPartOptions.Add("w", new List<IDateTimeFormatPartOptionTO> { new DateTimeFormatPartOptionTO(2, IsNumberWeekOfYear, true, null, AssignWeeks), new DateTimeFormatPartOptionTO(1, IsNumberWeekOfYear, true, null, AssignWeeks), }); DateTimeFormatsParts.Add("24h", new DateTimeFormatPartTO("24h", false, "Hours in 24 hour format: 15")); DateTimeFormatPartOptions.Add("24h", new List<IDateTimeFormatPartOptionTO> { new DateTimeFormatPartOptionTO(2, IsNumber24H, true, null, Assign24Hours) }); DateTimeFormatsParts.Add("12h", new DateTimeFormatPartTO("12h", false, "Hours in 12 hour format: 3")); DateTimeFormatPartOptions.Add("12h", new List<IDateTimeFormatPartOptionTO> { new DateTimeFormatPartOptionTO(2, IsNumber12H, true, null, Assign12Hours), new DateTimeFormatPartOptionTO(1, IsNumber12H, true, null, Assign12Hours), }); DateTimeFormatsParts.Add("min", new DateTimeFormatPartTO("min", false, "Minutes: 30")); DateTimeFormatPartOptions.Add("min", new List<IDateTimeFormatPartOptionTO> { new DateTimeFormatPartOptionTO(2, IsNumberMinutes, true, null, AssignMinutes), new DateTimeFormatPartOptionTO(1, IsNumberMinutes, true, null, AssignMinutes), }); DateTimeFormatsParts.Add("ss", new DateTimeFormatPartTO("ss", false, "Seconds: 29")); DateTimeFormatPartOptions.Add("ss", new List<IDateTimeFormatPartOptionTO> { new DateTimeFormatPartOptionTO(2, IsNumberSeconds, true, null, AssignSeconds), new DateTimeFormatPartOptionTO(1, IsNumberSeconds, true, null, AssignSeconds), }); DateTimeFormatsParts.Add("sp", new DateTimeFormatPartTO("sp", false, "Split Seconds: 987")); DateTimeFormatPartOptions.Add("sp", new List<IDateTimeFormatPartOptionTO> { new DateTimeFormatPartOptionTO(3, IsNumberMilliseconds, true, null, AssignMilliseconds), new DateTimeFormatPartOptionTO(2, IsNumberMilliseconds, true, null, AssignMilliseconds), new DateTimeFormatPartOptionTO(1, IsNumberMilliseconds, true, null, AssignMilliseconds), }); DateTimeFormatsParts.Add("am/pm", new DateTimeFormatPartTO("am/pm", false, "am or pm")); DateTimeFormatPartOptions.Add("am/pm", new List<IDateTimeFormatPartOptionTO> { new DateTimeFormatPartOptionTO(4, IsTextAmPm, false, null, AssignAmPm), new DateTimeFormatPartOptionTO(3, IsTextAmPm, false, null, AssignAmPm), new DateTimeFormatPartOptionTO(2, IsTextAmPm, false, null, AssignAmPm), }); DateTimeFormatsParts.Add("Z", new DateTimeFormatPartTO("Z", false, "Time zone in short format: GMT (if available on the system)")); DateTimeFormatPartOptions.Add("Z", TimeZones.Select(k => { IDateTimeFormatPartOptionTO dateTimeFormatPartOptionTo = new DateTimeFormatPartOptionTO(k.Key.Length, IsTextTimeZone, false, null, AssignTimeZone); return dateTimeFormatPartOptionTo; }).OrderByDescending(k => k.Length).ToList()); DateTimeFormatsParts.Add("ZZ", new DateTimeFormatPartTO("ZZ", false, "Time zone: Grenwich mean time")); DateTimeFormatPartOptions.Add("ZZ", TimeZones.Select(k => { IDateTimeFormatPartOptionTO dateTimeFormatPartOptionTo = new DateTimeFormatPartOptionTO(k.Key.Length, IsTextTimeZone, false, null, AssignTimeZone); return dateTimeFormatPartOptionTo; }).OrderByDescending(k => k.Length).ToList()); DateTimeFormatsParts.Add("ZZZ", new DateTimeFormatPartTO("ZZZ", false, "Time zone offset: GMT + 02:00")); DateTimeFormatPartOptions.Add("ZZZ", TimeZones.Select(k => { IDateTimeFormatPartOptionTO dateTimeFormatPartOptionTo = new DateTimeFormatPartOptionTO(k.Key.Length, IsTextTimeZone, false, null, AssignTimeZone); return dateTimeFormatPartOptionTo; }).OrderByDescending(k => k.Length).ToList()); DateTimeFormatsParts.Add("Era", new DateTimeFormatPartTO("Era", false, "A.D.")); DateTimeFormatPartOptions.Add("era", new List<IDateTimeFormatPartOptionTO> { new DateTimeFormatPartOptionTO(2, (data, treatAsTim) => data.ToLower().Equals("ad"), false, "AD", AssignEra) }); DateTimeFormatPartOptions.Add("Era", new List<IDateTimeFormatPartOptionTO> { new DateTimeFormatPartOptionTO(3, (data, treatAsTim) => data.ToLower().Equals("a.d"), false, "A.D", AssignEra) }); DateTimeFormatPartOptions.Add("ERA", new List<IDateTimeFormatPartOptionTO> { new DateTimeFormatPartOptionTO(4, (data, treatAsTim) => data.ToLower().Equals("a.d."), false, "A.D.", AssignEra) }); }
/// <summary> /// Creates a list of all valid time format parts /// </summary> private static void CreateTimeFormatParts() { TimeFormatPartOptions.Add("yy", new List<IDateTimeFormatPartOptionTO> { new DateTimeFormatPartOptionTO(2, IsTextNumeric, true, null, AssignYears) }); TimeFormatPartOptions.Add("yyyy", new List<IDateTimeFormatPartOptionTO> { new DateTimeFormatPartOptionTO(4, IsTextNumeric, true, null, AssignYears) }); TimeFormatPartOptions.Add("mm", new List<IDateTimeFormatPartOptionTO> { new DateTimeFormatPartOptionTO(2, IsNumberMonth, true, null, AssignMonths) }); TimeFormatPartOptions.Add("m", new List<IDateTimeFormatPartOptionTO> { new DateTimeFormatPartOptionTO(2, IsNumberMonth, true, null, AssignMonths), new DateTimeFormatPartOptionTO(1, IsNumberMonth, true, null, AssignMonths), }); TimeFormatPartOptions.Add("MM", new List<IDateTimeFormatPartOptionTO> { new DateTimeFormatPartOptionTO(2, IsNumberMonth, true, null, AssignMonths) }); TimeFormatPartOptions.Add("M", new List<IDateTimeFormatPartOptionTO> { new DateTimeFormatPartOptionTO(2, IsNumberMonth, true, null, AssignMonths), new DateTimeFormatPartOptionTO(1, IsNumberMonth, true, null, AssignMonths), }); TimeFormatPartOptions.Add("d", new List<IDateTimeFormatPartOptionTO> { new DateTimeFormatPartOptionTO(2, IsNumberDay, true, null, AssignDays), new DateTimeFormatPartOptionTO(1, IsNumberDay, true, null, AssignDays) }); TimeFormatPartOptions.Add("dd", new List<IDateTimeFormatPartOptionTO> { new DateTimeFormatPartOptionTO(2, IsNumberDay, true, null, AssignDays) }); TimeFormatPartOptions.Add("DW", new List<IDateTimeFormatPartOptionTO> { new DateTimeFormatPartOptionTO(1, IsNumberDayOfWeek, true, null, AssignDaysOfWeek), }); TimeFormatPartOptions.Add("dW", new List<IDateTimeFormatPartOptionTO> { new DateTimeFormatPartOptionTO(1, IsNumberDayOfWeek, true, null, AssignDaysOfWeek), }); TimeFormatPartOptions.Add("dw", new List<IDateTimeFormatPartOptionTO> { new DateTimeFormatPartOptionTO(1, IsNumberDayOfWeek, true, null, AssignDaysOfWeek), }); TimeFormatPartOptions.Add("dy", new List<IDateTimeFormatPartOptionTO> { new DateTimeFormatPartOptionTO(3, IsNumberDayOfYear, true, null, AssignDaysOfYear), new DateTimeFormatPartOptionTO(2, IsNumberDayOfYear, true, null, AssignDaysOfYear), new DateTimeFormatPartOptionTO(1, IsNumberDayOfYear, true, null, AssignDaysOfYear) }); TimeFormatPartOptions.Add("w", new List<IDateTimeFormatPartOptionTO> { new DateTimeFormatPartOptionTO(2, IsNumberWeekOfYear, true, null, AssignWeeks), new DateTimeFormatPartOptionTO(1, IsNumberWeekOfYear, true, null, AssignWeeks), }); TimeFormatPartOptions.Add("24h", new List<IDateTimeFormatPartOptionTO> { new DateTimeFormatPartOptionTO(2, IsNumber24H, true, null, Assign24Hours) }); TimeFormatPartOptions.Add("12h", new List<IDateTimeFormatPartOptionTO> { new DateTimeFormatPartOptionTO(2, IsNumber12H, true, null, Assign12Hours), new DateTimeFormatPartOptionTO(1, IsNumber12H, true, null, Assign12Hours), }); TimeFormatPartOptions.Add("min", new List<IDateTimeFormatPartOptionTO> { new DateTimeFormatPartOptionTO(2, IsNumberMinutes, true, null, AssignMinutes), new DateTimeFormatPartOptionTO(1, IsNumberMinutes, true, null, AssignMinutes), }); TimeFormatPartOptions.Add("ss", new List<IDateTimeFormatPartOptionTO> { new DateTimeFormatPartOptionTO(2, IsNumberSeconds, true, null, AssignSeconds), new DateTimeFormatPartOptionTO(1, IsNumberSeconds, true, null, AssignSeconds), }); TimeFormatPartOptions.Add("sp", new List<IDateTimeFormatPartOptionTO> { new DateTimeFormatPartOptionTO(3, IsNumberMilliseconds, true, null, AssignMilliseconds), new DateTimeFormatPartOptionTO(2, IsNumberMilliseconds, true, null, AssignMilliseconds), new DateTimeFormatPartOptionTO(1, IsNumberMilliseconds, true, null, AssignMilliseconds), }); TimeFormatPartOptions.Add("am/pm", new List<IDateTimeFormatPartOptionTO> { new DateTimeFormatPartOptionTO(4, IsTextAmPm, false, null, AssignAmPm), new DateTimeFormatPartOptionTO(3, IsTextAmPm, false, null, AssignAmPm), new DateTimeFormatPartOptionTO(2, IsTextAmPm, false, null, AssignAmPm), }); TimeFormatPartOptions.Add("Z", TimeZones.Select(k => { IDateTimeFormatPartOptionTO dateTimeFormatPartOptionTo = new DateTimeFormatPartOptionTO(k.Key.Length, IsTextTimeZone, false, null, AssignTimeZone); return dateTimeFormatPartOptionTo; }).OrderByDescending(k => k.Length).ToList()); TimeFormatPartOptions.Add("ZZ", TimeZones.Select(k => { IDateTimeFormatPartOptionTO dateTimeFormatPartOptionTo = new DateTimeFormatPartOptionTO(k.Key.Length, IsTextTimeZone, false, null, AssignTimeZone); return dateTimeFormatPartOptionTo; }).OrderByDescending(k => k.Length).ToList()); TimeFormatPartOptions.Add("ZZZ", TimeZones.Select(k => { IDateTimeFormatPartOptionTO dateTimeFormatPartOptionTo = new DateTimeFormatPartOptionTO(k.Key.Length, IsTextTimeZone, false, null, AssignTimeZone); return dateTimeFormatPartOptionTo; }).OrderByDescending(k => k.Length).ToList()); TimeFormatPartOptions.Add("era", new List<IDateTimeFormatPartOptionTO> { new DateTimeFormatPartOptionTO(2, (data, treatAsTim) => data.ToLower().Equals("ad"), false, "AD", AssignEra) }); TimeFormatPartOptions.Add("Era", new List<IDateTimeFormatPartOptionTO> { new DateTimeFormatPartOptionTO(3, (data, treatAsTim) => data.ToLower().Equals("a.d"), false, "A.D", AssignEra) }); TimeFormatPartOptions.Add("ERA", new List<IDateTimeFormatPartOptionTO> { new DateTimeFormatPartOptionTO(4, (data, treatAsTim) => data.ToLower().Equals("a.d."), false, "A.D.", AssignEra) }); }