Exemplo n.º 1
0
        /// <summary>
        /// Adjusts the DateTimeSpan object to account for timezone offset.
        /// NLDAS Date/Times are in GMT.
        /// Adjustment effects range of the requested data but not the date values of the data. Date values are altered with SetDateToLocal()
        /// </summary>
        /// <param name="errorMsg"></param>
        /// <param name="cInput">ITimeSeriesInput</param>
        /// <returns></returns>
        public static IDateTimeSpan AdjustForOffset(out string errorMsg, ITimeSeriesInput cInput)
        {
            errorMsg = "";
            IDateTimeSpan dateTime = cInput.DateTimeSpan;

            if (cInput.Geometry.Timezone.Offset < 0.0 && cInput.TimeLocalized == true)
            {
                dateTime.StartDate = new DateTime(dateTime.StartDate.Year, dateTime.StartDate.Month, dateTime.StartDate.Day, 1 + Convert.ToInt16(System.Math.Abs(cInput.Geometry.Timezone.Offset)), 00, 00);
            }
            else if (cInput.Geometry.Timezone.Offset > 0.0 && cInput.TimeLocalized == true)
            {
                dateTime.StartDate = dateTime.StartDate.AddDays(-1.0);
                dateTime.StartDate = new DateTime(dateTime.StartDate.Year, dateTime.StartDate.Month, dateTime.StartDate.Day, 24 - Convert.ToInt16(cInput.Geometry.Timezone.Offset), 00, 00);
            }
            else
            {
                dateTime.StartDate = new DateTime(dateTime.StartDate.Year, dateTime.StartDate.Month, dateTime.StartDate.Day, 01, 00, 00);
            }

            if (cInput.Geometry.Timezone.Offset < 0.0 && cInput.TimeLocalized == true)
            {
                dateTime.EndDate = dateTime.EndDate.AddDays(1.0);
                dateTime.EndDate = new DateTime(dateTime.EndDate.Year, dateTime.EndDate.Month, dateTime.EndDate.Day, Convert.ToInt16(System.Math.Abs(cInput.Geometry.Timezone.Offset)), 00, 00);
            }
            else if (cInput.Geometry.Timezone.Offset > 0.0 && cInput.TimeLocalized == true)
            {
                dateTime.EndDate = new DateTime(dateTime.EndDate.Year, dateTime.EndDate.Month, dateTime.EndDate.Day, 24 - Convert.ToInt16(cInput.Geometry.Timezone.Offset), 00, 00);
            }
            else
            {
                dateTime.EndDate = dateTime.EndDate.AddDays(1.0);
                dateTime.EndDate = new DateTime(dateTime.EndDate.Year, dateTime.EndDate.Month, dateTime.EndDate.Day, 00, 00, 00);
            }
            return(dateTime);
        }
Exemplo n.º 2
0
        /// <summary>
        /// Validates DateTimeSpan input.
        /// </summary>
        /// <param name="errors"></param>
        /// <param name="dateTime"></param>
        /// <returns></returns>
        public static bool ValidateDates(out List <string> errors, IDateTimeSpan dateTime)
        {
            errors = new List <string>();
            bool nullDates = false;

            if (dateTime == null)
            {
                errors.Add("ERROR: No DateTimeSpan found.");
                return(false);
            }
            if (dateTime.StartDate == null)
            {
                errors.Add("ERROR: Start date was not found.");
                nullDates = true;
            }
            if (dateTime.EndDate == null)
            {
                errors.Add("ERROR: End date was not found.");
                nullDates = true;
            }
            if (nullDates)
            {
                return(false);
            }
            else
            {
                if (dateTime.StartDate.Equals(DateTime.MinValue))
                {
                    errors.Add("ERROR: Required 'StartDate' parameter was not found or is invalid.");
                    nullDates = true;
                }
                if (dateTime.EndDate.Equals(DateTime.MinValue))
                {
                    errors.Add("ERROR: Required 'EndDate' parameter was not found or is invalid.");
                    nullDates = true;
                }
                if (nullDates)
                {
                    return(false);
                }
                if (DateTime.Compare(dateTime.StartDate, dateTime.EndDate) >= 0)
                {
                    errors.Add("ERROR: Start date must be before end date.");
                    return(false);
                }
                return(true);
            }
        }