Esempio n. 1
0
      /// <summary>
      /// Gets the abbreviated and day names, beginning with the first day provided by the <paramref name="provider"/>.
      /// </summary>
      /// <param name="provider">The <see cref="ICustomFormatProvider"/> to use.</param>
      /// <returns>The abbreviated and day names beginning with the first day.</returns>
      public static string[,] GetDayNames(ICustomFormatProvider provider)
      {
         List<string> abbDayNames = new List<string>(provider.AbbreviatedDayNames);
         List<string> shortestDayNames = new List<string>(provider.ShortestDayNames);
         List<string> dayNames = new List<string>(provider.DayNames);
         string firstDayName = provider.GetAbbreviatedDayName(provider.FirstDayOfWeek);

         int firstNameIndex = abbDayNames.IndexOf(firstDayName);

         string[,] names = new string[3, dayNames.Count];
         int j = 0;

         for (int i = firstNameIndex; i < abbDayNames.Count; i++, j++)
         {
            names[0, j] = dayNames[i];
            names[1, j] = abbDayNames[i];
            names[2, j] = shortestDayNames[i];
         }

         for (int i = 0; i < firstNameIndex; i++, j++)
         {
            names[0, j] = dayNames[i];
            names[1, j] = abbDayNames[i];
            names[2, j] = shortestDayNames[i];
         }

         return names;
      }
Esempio n. 2
0
        /// <summary>
        /// Gets the abbreviated and day names, beginning with the first day provided by the <paramref name="provider"/>.
        /// </summary>
        /// <param name="provider">The <see cref="ICustomFormatProvider"/> to use.</param>
        /// <returns>The abbreviated and day names beginning with the first day.</returns>
        public static string[,] GetDayNames(ICustomFormatProvider provider)
        {
            List <string> abbDayNames      = new List <string>(provider.AbbreviatedDayNames);
            List <string> shortestDayNames = new List <string>(provider.ShortestDayNames);
            List <string> dayNames         = new List <string>(provider.DayNames);
            string        firstDayName     = provider.GetAbbreviatedDayName(provider.FirstDayOfWeek);

            int firstNameIndex = abbDayNames.IndexOf(firstDayName);

            string[,] names = new string[3, dayNames.Count];
            int j = 0;

            for (int i = firstNameIndex; i < abbDayNames.Count; i++, j++)
            {
                names[0, j] = dayNames[i];
                names[1, j] = abbDayNames[i];
                names[2, j] = shortestDayNames[i];
            }

            for (int i = 0; i < firstNameIndex; i++, j++)
            {
                names[0, j] = dayNames[i];
                names[1, j] = abbDayNames[i];
                names[2, j] = shortestDayNames[i];
            }

            return(names);
        }
Esempio n. 3
0
        /// <summary>
        /// Gets the abbreviated or full day name for the specified <see cref="DayOfWeek"/> value using,
        /// if not null, the <paramref name="nameProvider"/> or the <see cref="DateTimeFormatInfo"/> specified by <paramref name="info"/>.
        /// </summary>
        /// <param name="dayofweek">The <see cref="DayOfWeek"/> value to get the day name for.</param>
        /// <param name="info">The <see cref="DateTimeFormatInfo"/> to get the name.</param>
        /// <param name="nameProvider">The <see cref="ICustomFormatProvider"/> to get the name.
        /// This parameter has precedence before the <paramref name="info"/>. Can be <c>null</c>.</param>
        /// <param name="abbreviated">true to get the abbreviated day name; false otherwise.</param>
        /// <returns>The full or abbreviated day name specified by <paramref name="dayofweek"/> value.</returns>
        private static string GetDayName(DayOfWeek dayofweek, DateTimeFormatInfo info, ICustomFormatProvider nameProvider, bool abbreviated)
        {
            if (nameProvider != null)
            {
                return(abbreviated ? nameProvider.GetAbbreviatedDayName(dayofweek) : nameProvider.GetDayName(dayofweek));
            }

            return(abbreviated ? info.GetAbbreviatedDayName(dayofweek) : info.GetDayName(dayofweek));
        }
Esempio n. 4
0
        /// <summary>
        /// Gets the abbreviated or full day name for the specified <see cref="DayOfWeek"/> value using, if not null, the <paramref name="nameProvider"/> or
        /// the <see cref="DateTimeFormatInfo"/> specified by <paramref name="info"/>.
        /// </summary>
        /// <param name="dayofweek">
        /// The <see cref="DayOfWeek"/> value to get the day name for.
        /// </param>
        /// <param name="info">
        /// The <see cref="DateTimeFormatInfo"/> to get the name.
        /// </param>
        /// <param name="nameProvider">
        /// The <see cref="ICustomFormatProvider"/> to get the name. This parameter has precedence before the
        /// <paramref name="info"/>. Can be <c>null</c>.
        /// </param>
        /// <param name="abbreviated">
        /// true to get the abbreviated day name; false otherwise.
        /// </param>
        /// <returns>
        /// The full or abbreviated day name specified by <paramref name="dayofweek"/> value.
        /// </returns>
        private static string GetDayName(DayOfWeek dayofweek, DateTimeFormatInfo info, ICustomFormatProvider nameProvider, bool abbreviated)
        {
            if (nameProvider != null)
            {
                return abbreviated ? nameProvider.GetAbbreviatedDayName(dayofweek) : nameProvider.GetDayName(dayofweek);
            }

            return abbreviated ? info.GetAbbreviatedDayName(dayofweek) : info.GetDayName(dayofweek);
        }
Esempio n. 5
0
            public string ParsePattern(MonthCalendarDate date, string[] nativeDigits = null)
            {
                // replace date separator with '/'
                string format = this.pattern.Replace(provider.DateSeparator, "/");

                StringBuilder sb = new StringBuilder();

                Calendar c = provider.Calendar;

                int i     = 0;
                int index = 0;

                while (i < format.Length)
                {
                    int    tokLen;
                    char   ch = format[i];
                    string currentString;

                    switch (ch)
                    {
                    case 'd':
                    {
                        tokLen = CountChar(format, i, ch);

                        if (tokLen <= 2)
                        {
                            currentString = DateMethods.GetNumberString(date.Day, nativeDigits, tokLen == 2);

                            this.isDayNumber = true;

                            this.dayString = currentString;

                            this.dayPartIndex = index++;

                            this.dayIndex = sb.Length;
                        }
                        else
                        {
                            currentString = tokLen == 3 ? provider.GetAbbreviatedDayName(c.GetDayOfWeek(date.Date)) : provider.GetDayName(c.GetDayOfWeek(date.Date));

                            this.dayNameString = currentString;
                        }

                        sb.Append(currentString);

                        break;
                    }

                    case 'M':
                    {
                        tokLen = CountChar(format, i, ch);

                        if (tokLen <= 2)
                        {
                            currentString = DateMethods.GetNumberString(date.Month, nativeDigits, tokLen == 2);

                            this.isMonthNumber = true;
                        }
                        else
                        {
                            currentString = tokLen == 3
                                              ? provider.GetAbbreviatedMonthName(date.Year, date.Month)
                                              : provider.GetMonthName(date.Year, date.Month);
                        }

                        this.monthPartIndex = index++;

                        this.monthIndex = sb.Length;

                        this.monthString = currentString;

                        sb.Append(currentString);

                        break;
                    }

                    case 'y':
                    {
                        tokLen = CountChar(format, i, ch);

                        var year = tokLen <= 2 ? date.Year % 100 : date.Year;

                        currentString = DateMethods.GetNumberString(year, nativeDigits, tokLen <= 2);

                        this.yearString = currentString;

                        this.yearPartIndex = index++;

                        this.yearIndex = sb.Length;

                        sb.Append(currentString);

                        break;
                    }

                    case 'g':
                    {
                        tokLen = CountChar(format, i, ch);

                        currentString = provider.GetEraName(c.GetEra(date.Date));

                        this.eraString = currentString;

                        sb.Append(currentString);

                        break;
                    }

                    case '/':
                    {
                        tokLen = CountChar(format, i, ch);

                        sb.Append(provider.DateSeparator);

                        break;
                    }

                    default:
                    {
                        tokLen = 1;

                        sb.Append(ch.ToString(CultureInfo.CurrentUICulture));

                        break;
                    }
                    }

                    i += tokLen;
                }

                return(sb.ToString());
            }
            public string ParsePattern(MonthCalendarDate date)
            {
                // replace date separator with '/'
                string format = pattern.Replace(provider.DateSeparator, "/");

                // reverse pattern if rtl culture
                if (this.provider.IsRTLLanguage)
                {
                    List <char> chars = new List <char>(format.ToCharArray());
                    chars.Reverse();

                    format = new string(chars.ToArray());
                }

                StringBuilder sb = new StringBuilder();
                Calendar      c  = provider.Calendar;

                int i     = 0;
                int index = 0;

                while (i < format.Length)
                {
                    int    tokLen;
                    char   ch = format[i];
                    string currentString;

                    switch (ch)
                    {
                    case 'd':
                    {
                        tokLen = CountChar(format, i, ch);

                        if (tokLen <= 2)
                        {
                            currentString = tokLen == 2 ? date.Day.ToString("##00") : date.Day.ToString();

                            this.isDayNumber = true;

                            this.dayString = currentString;

                            this.dayPartIndex = index++;

                            this.dayIndex = sb.Length;
                        }
                        else
                        {
                            currentString = tokLen == 3 ? provider.GetAbbreviatedDayName(c.GetDayOfWeek(date.Date)) : provider.GetDayName(c.GetDayOfWeek(date.Date));

                            this.dayNameString = currentString;
                        }

                        sb.Append(currentString);

                        break;
                    }

                    case 'M':
                    {
                        tokLen = CountChar(format, i, ch);

                        if (tokLen <= 2)
                        {
                            currentString = tokLen == 2 ? date.Month.ToString("##00") : date.Month.ToString();

                            this.isMonthNumber = true;
                        }
                        else
                        {
                            currentString = tokLen == 3
                                              ? provider.GetAbbreviatedMonthName(date.Year, date.Month)
                                              : provider.GetMonthName(date.Year, date.Month);
                        }

                        this.monthPartIndex = index++;

                        this.monthIndex = sb.Length;

                        this.monthString = currentString;

                        sb.Append(currentString);

                        break;
                    }

                    case 'y':
                    {
                        tokLen = CountChar(format, i, ch);

                        currentString = tokLen <= 2 ? (date.Year % 100).ToString("##00") : date.Year.ToString();

                        this.yearString = currentString;

                        this.yearPartIndex = index++;

                        this.yearIndex = sb.Length;

                        sb.Append(currentString);

                        break;
                    }

                    case 'g':
                    {
                        tokLen = CountChar(format, i, ch);

                        currentString = provider.GetEraName(c.GetEra(date.Date));

                        this.eraString = currentString;

                        sb.Append(currentString);

                        break;
                    }

                    case '/':
                    {
                        tokLen = CountChar(format, i, ch);

                        sb.Append(provider.DateSeparator);

                        break;
                    }

                    default:
                    {
                        tokLen = 1;

                        sb.Append(ch.ToString());

                        break;
                    }
                    }

                    i += tokLen;
                }

                return(sb.ToString());
            }