예제 #1
0
    public static SqlDateTime TA_ASM_CalculateFromDateRange(DateTime dt, int RangeOrder, int RangeFromMonth, int RangeFromDay, int RangeToMonth, int RangeToDay, int culture)
    {
        try
        {
            Calendar calendar = null;
            switch (culture)
            {
            case 1: calendar = new PersianCalendar(); break;

            default: calendar = new GregorianCalendar(); break;
            }
            if (RangeOrder == 1 && RangeFromMonth > RangeToMonth)
            {
                //در اولین بازه محدوده، ماه شروع در سال قبل قرار گرفته
                dt = calendar.AddYears(dt, -1);
            }
            else if (RangeOrder == 0 && RangeFromMonth >= RangeToMonth)
            {
                //بازه سالانه است و شروع در سال قبل قرار گرفته
                dt = calendar.AddYears(dt, -1);
            }

            return(calendar.ToDateTime(calendar.GetYear(dt), RangeFromMonth, RangeFromDay, 0, 0, 0, 0));
        }
        catch (Exception ex)
        {
            throw new Exception(String.Format("GTS CalculateFromDateRange Exception:{0}", ex.Message));
        }
    }
예제 #2
0
        public void AddYearOnLeapYear()
        {
            GregorianCalendar c    = new GregorianCalendar();
            DateTime          d    = new DateTime(2004, 2, 29);
            DateTime          prev = c.AddYears(d, -1);

            Assert.AreEqual(2, prev.Month, "prev");
            DateTime next = c.AddYears(d, 1);

            Assert.AreEqual(2, next.Month, "next");
        }
예제 #3
0
    public static SqlDateTime TA_ASM_CalculateToDateRange(DateTime dt, int RangeOrder, int RangeFromMonth, int RangeFromDay, int RangeToMonth, int RangeToDay, int culture)
    {
        try
        {
            Calendar calendar = null;
            switch (culture)
            {
            case 1: calendar = new PersianCalendar(); break;

            default: calendar = new GregorianCalendar(); break;
            }

            if (RangeOrder == 12 && RangeFromMonth > RangeToMonth)
            {
                //در آخرین بازه محدوده، ماه پایان در سال بعد قرار گرفته
                dt = calendar.AddYears(dt, 1);
            }
            else if (RangeOrder == 0 && RangeFromMonth >= RangeToMonth)
            {
                //بازه سالانه است و پایان در سال بعد قرار گرفته
                dt = calendar.AddYears(dt, 1);
            }

            if (calendar is PersianCalendar)
            {
                if (calendar.IsLeapYear(calendar.GetYear(dt)) && RangeToMonth == 12 && RangeToDay == 29)
                {
                    return(calendar.ToDateTime(calendar.GetYear(dt), RangeToMonth, 30, 0, 0, 0, 0));
                }
                else
                {
                    return(calendar.ToDateTime(calendar.GetYear(dt), RangeToMonth, RangeToDay, 0, 0, 0, 0));
                }
            }
            else
            {
                if (calendar.IsLeapYear(dt.Year) && RangeToMonth == 2 && RangeToDay == 28)
                {
                    //اگر سال کبسه بود و برای ماه فوریه روز 28 انتخاب شده بود
                    //به صورت خودکار با روز 29 جایگزین می شود
                    return(calendar.ToDateTime(dt.Year, RangeToMonth, 29, 0, 0, 0, 0));
                }
                else
                {
                    return(calendar.ToDateTime(dt.Year, RangeToMonth, RangeToDay, 0, 0, 0, 0));
                }
            }
        }
        catch (Exception ex)
        {
            throw new Exception(String.Format("GTS CalculateFromDateRange Exception:{0}", ex.Message));
        }
    }
 /// <summary>
 /// Returns a DateTime that is the specified number of years away from
 /// the specified DateTime.
 /// </summary>
 /// <param name="day">The DateTime to which to add years.</param>
 /// <param name="years">The number of years to add.</param>
 /// <returns>
 /// The DateTime that results from adding the specified number of years
 /// to the specified DateTime.
 /// </returns>
 public override DateTime?AddYears(DateTime day, int years)
 {
     try
     {
         return(_calendar.AddYears(day, years));
     }
     catch (ArgumentException)
     {
         return(null);
     }
 }
        public void PosTest6()
        {
            DateTime initialTime;
            int      years;
            DateTime resultingTime;

            System.Globalization.Calendar myCalendar = new GregorianCalendar(GregorianCalendarTypes.USEnglish);
            years         = 4;
            initialTime   = myCalendar.ToDateTime(1996, 2, 29, 10, 30, 24, 0);
            resultingTime = myCalendar.AddYears(initialTime, years);
            VerifyAddyearsResult(myCalendar, initialTime, resultingTime, years);
        }
        public void PosTest3()
        {
            DateTime initialTime;
            int      years;
            DateTime resultingTime;

            System.Globalization.Calendar myCalendar = new GregorianCalendar(GregorianCalendarTypes.USEnglish);
            years         = -99;
            initialTime   = myCalendar.MaxSupportedDateTime;
            resultingTime = myCalendar.AddYears(initialTime, years);
            VerifyAddyearsResult(myCalendar, initialTime, resultingTime, years);
        }
        public void PosTest1()
        {
            DateTime initialTime;
            int      years;
            DateTime resultingTime;

            System.Globalization.Calendar myCalendar = new GregorianCalendar(GregorianCalendarTypes.USEnglish);
            years         = 0;
            initialTime   = DateTime.Now;
            resultingTime = myCalendar.AddYears(initialTime, years);
            Assert.Equal(initialTime, resultingTime);
        }
예제 #8
0
 public static DateTime?AddYears(DateTime time, int years)
 {
     System.Globalization.Calendar cal = new GregorianCalendar();
     try
     {
         return(cal.AddYears(time, years));
     }
     catch (ArgumentException)
     {
         return(null);
     }
 }
        public void NegTest1()
        {
            DateTime time;
            int      years;

            System.Globalization.Calendar myCalendar;
            time       = DateTime.Now;
            years      = 9999;
            myCalendar = new GregorianCalendar(GregorianCalendarTypes.USEnglish);
            Assert.Throws <ArgumentOutOfRangeException>(() =>
            {
                myCalendar.AddYears(time, years);
            });
        }
        public void PosTest4()
        {
            DateTime initialTime;
            int      years;
            DateTime resultingTime;

            System.Globalization.Calendar myCalendar = new GregorianCalendar(GregorianCalendarTypes.USEnglish);
            years = 1;
            long maxTimeInTicks = myCalendar.MaxSupportedDateTime.Ticks;
            long minTimeInTikcs = myCalendar.MinSupportedDateTime.Ticks;

            initialTime   = new DateTime(_generator.GetInt64(-55) % maxTimeInTicks);
            resultingTime = myCalendar.AddYears(initialTime, years);
            VerifyAddyearsResult(myCalendar, initialTime, resultingTime, years);
        }
예제 #11
0
    public static void Main()
    {
        // Sets a DateTime to April 3, 2002 of the Gregorian calendar.
        DateTime myDT = new DateTime(2002, 4, 3, new GregorianCalendar());

        // Creates an instance of the GregorianCalendar.
        GregorianCalendar myCal = new GregorianCalendar();

        // Displays the values of the DateTime.
        Console.WriteLine("April 3, 2002 of the Gregorian calendar:");
        DisplayValues(myCal, myDT);

        // Adds two years and ten months.
        myDT = myCal.AddYears(myDT, 2);
        myDT = myCal.AddMonths(myDT, 10);

        // Displays the values of the DateTime.
        Console.WriteLine("After adding two years and ten months:");
        DisplayValues(myCal, myDT);
    }
예제 #12
0
        private long GetNextPoint(ref DateTime t, int unit, int unitSteps)
        {
            switch (unit)
            {
            case 0:
                t = gc.AddSeconds(t, unitSteps);
                break;

            case 1:
                t = gc.AddMinutes(t, unitSteps);
                break;

            case 2:
                t = gc.AddHours(t, unitSteps);
                break;

            case 3:
                t = gc.AddDays(t, unitSteps);
                break;

            case 4:
                t = gc.AddWeeks(t, unitSteps);
                break;

            case 5:
                t = gc.AddMonths(t, unitSteps);
                break;

            case 6:
                t = gc.AddYears(t, unitSteps);
                break;

            default:
                break;
            }

            return(Util.TicksToMillis(t.Ticks));
        }