/// <summary> /// Gets a sequence of LoopingSelector parts ordered according to culture string for date/time formatting. /// </summary> /// <returns>LoopingSelectors ordered by culture-specific priority.</returns> protected override IEnumerable <LoopingSelector> GetSelectorsOrderedByCulturePattern() { string pattern = CultureInfo.CurrentCulture.DateTimeFormat.ShortDatePattern.ToUpperInvariant(); if (DateTimePickerBase.DateShouldFlowRTL()) { char[] reversedPattern = pattern.ToCharArray(); Array.Reverse(reversedPattern); pattern = new string(reversedPattern); } return(GetSelectorsOrderedByCulturePattern( pattern, new char[] { 'Y', 'M', 'D' }, new LoopingSelector[] { PrimarySelector, SecondarySelector, TertiarySelector })); }
/// <summary> /// Gets a sequence of LoopingSelector parts ordered according to culture string for date/time formatting. /// </summary> /// <returns>LoopingSelectors ordered by culture-specific priority.</returns> protected override IEnumerable <LoopingSelector> GetSelectorsOrderedByCulturePattern() { string pattern = CultureInfo.CurrentCulture.DateTimeFormat.LongTimePattern.ToUpperInvariant(); // The goal is to put the AM/PM part at the beginning for RTL languages. if (DateTimePickerBase.IsRTLLanguage()) { var parts = pattern.Split(' '); Array.Reverse(parts); pattern = string.Join(" ", parts); } return(GetSelectorsOrderedByCulturePattern( pattern, new char[] { 'H', 'M', 'T' }, new LoopingSelector[] { PrimarySelector, SecondarySelector, TertiarySelector })); }