Пример #1
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="persianDate"></param>
        /// <returns></returns>
        public static DateTime PersianDateTimeToGergorian(List <int> persianDate)
        {
            var        persianCalendar = new System.Globalization.PersianCalendar();
            DateTime   date            = new DateTime(1900, 1, 1);
            List <int> Start           = GergorianDateTimeToPersion(date);

            date = persianCalendar.AddYears(date, persianDate[0] - Start[0]);
            date = persianCalendar.AddMonths(date, persianDate[1] - Start[1]);
            date = persianCalendar.AddDays(date, persianDate[2] - Start[2]);

            try
            {
                date = persianCalendar.AddHours(date, persianDate[3] - Start[3]);
                date = persianCalendar.AddMinutes(date, persianDate[4] - Start[4]);
                date = persianCalendar.AddSeconds(date, persianDate[5] - Start[5]);
            }
            catch
            {
                date = persianCalendar.AddHours(date, 12 - Start[3]);
                date = persianCalendar.AddMinutes(date, 0 - Start[4]);
                date = persianCalendar.AddSeconds(date, 0 - Start[5]);
            }

            return(date);
        }
Пример #2
0
        //Test methods.
        internal static string tst()
        {
            string r = "";

            System.Globalization.PersianCalendar pc = new System.Globalization.PersianCalendar();
            var z = pc.ToDateTime(1, 1, 1, 0, 0, 0, 0);

            for (uint i = 0; i <= (DateTime.MaxValue - z).Days; i++)
            {
                int y, m, d;
                yearMonthDay(i, out y, out m, out d);
                var td = pc.AddDays(z, (int)i);
                int yy = pc.GetYear(td), mm = pc.GetMonth(td), dd = pc.GetDayOfMonth(td);
                if (yy != y || dd != d || mm != m || days(yy, mm, dd) != i || !IsValid(y, m, d))
                {
                    r += string.Format("\r\n{0}: {1}/{2}/{3},  {4}", i, y, m, d, days(y, m, d));
                }
            }

            return(r);
        }