Example #1
0
        public static string ToXrmString(DateTime date)
        {
            // Get a date string from the Date object
            //2011-04-20T14:00:00Z
            // NOTE: we assume that the local date is in fact converted to UTC already
            // This avoids any local browser timezone missmatches with the user settings timezone
            string month = DateTimeEx.PadNumber(date.GetMonth() + 1, 2);
            string day   = DateTimeEx.PadNumber(date.GetDate(), 2);
            string hours = DateTimeEx.PadNumber(date.GetHours(), 2);
            string mins  = DateTimeEx.PadNumber(date.GetMinutes(), 2);
            string secs  = DateTimeEx.PadNumber(date.GetSeconds(), 2);

            return(String.Format("{0}-{1}-{2}T{3}:{4}:{5}Z", date.GetFullYear(), month, day, hours, mins, secs));
        }
Example #2
0
        private static DateTime GetCutoverTime(DateTime CurrentTime,
                                               int?Year,
                                               int?Month,
                                               int?Day,
                                               int?Hour,
                                               int?Minute,
                                               int?Second,
                                               int?Milliseconds,
                                               int?Weekday
                                               )
        {
            if (Year != 0)
            {
                return(null);
            }

            DateTime WorkingTime;
            DateTime ScratchTime;
            int?     BestWeekdayDate;
            int?     WorkingWeekdayNumber;
            int?     TargetWeekdayNumber;
            int?     TargetYear;
            int?     TargetMonth;
            int?     TargetWeekday;  // range [0..6] == [Sunday..Saturday]

            // The time is an day in the month style time
            //   the convention is the Day is 1-5 specifying 1st, 2nd... Last
            //   day within the month. The day is WeekDay.

            // Compute the target month and year
            TargetWeekdayNumber = Day;
            if ((TargetWeekdayNumber > 5) || (TargetWeekdayNumber == 0))
            {
                return(null);
            }

            TargetWeekday = Weekday;
            TargetMonth   = Month;
            TargetYear    = CurrentTime.GetFullYear();

            BestWeekdayDate = 0;

            WorkingTime = DateTimeEx.FirstDayOfMonth(CurrentTime, (int)TargetMonth);
            WorkingTime = DateTimeEx.DateAdd(DateInterval.Hours, (int)Hour, WorkingTime);
            WorkingTime = DateTimeEx.DateAdd(DateInterval.Minutes, (int)Minute, WorkingTime);
            WorkingTime = DateTimeEx.DateAdd(DateInterval.Seconds, (int)Second, WorkingTime);
            WorkingTime = DateTimeEx.DateAdd(DateInterval.Milliseconds, (int)Milliseconds, WorkingTime);

            ScratchTime = WorkingTime;

            // Compute bias to target weekday
            if (ScratchTime.GetDay() > TargetWeekday)
            {
                WorkingTime = DateTimeEx.DateAdd(DateInterval.Days, (int)(7 - (ScratchTime.GetDay() - TargetWeekday)), WorkingTime);
            }
            else if (ScratchTime.GetDay() < TargetWeekday)
            {
                WorkingTime = DateTimeEx.DateAdd(DateInterval.Days, (int)(TargetWeekday - ScratchTime.GetDay()), WorkingTime);
            }

            //  We are now at the first weekday that matches our target weekday
            BestWeekdayDate      = WorkingTime.GetDay();
            WorkingWeekdayNumber = 1;

            // Keep going one week at a time until we either pass the
            // target weekday, or we match exactly
            ScratchTime = WorkingTime;

            while (WorkingWeekdayNumber < TargetWeekdayNumber)
            {
                WorkingTime = DateTimeEx.DateAdd(DateInterval.Days, 7, WorkingTime);
                if (WorkingTime.GetMonth() != ScratchTime.GetMonth())
                {
                    break;
                }
                ScratchTime          = WorkingTime;
                WorkingWeekdayNumber = WorkingWeekdayNumber + 1;
            }

            return(ScratchTime);
        }