Example #1
0
        /// <summary>
        /// Do the sampling
        /// </summary>
        /// <param name="value">The timestamp</param>
        /// <param name="local">use UTC time zone</param>
        /// <param name="factor">use factor of the time unit</param>
        /// <returns>The projected timestamp</returns>
        public static DateTimeOffset DoSampling(DateTimeOffset value, bool local, int factor = 1)
        {
            var timezone = GetTimeZone();

            if (local && timezone != null)
            {
                var dt = TimeZoneSource.ConvertUtcToLocal(value, timezone);
                value = new DateTimeOffset(dt.Year, dt.Month, dt.Day, dt.Hour, dt.Minute, dt.Second, default(TimeSpan));
            }

            int month = value.Month;

            if (factor != 1)
            {
                month = value.Month - 1;
                var reminder = month % factor;
                if (reminder != 0)
                {
                    month = month - reminder;
                }
                month++;
            }

            return(new DateTimeOffset(value.Year, month, NatualValues.DayOfMonth, NatualValues.Hour, NatualValues.Minute, NatualValues.Second, value.Offset));
        }
Example #2
0
        /// <summary>
        /// Do the sampling
        /// </summary>
        /// <param name="value">The timestamp</param>
        /// <param name="local">use UTC time zone</param>
        /// <param name="firstDay">The first day of the week</param>
        /// <param name="factor">use factor of the time unit</param>
        /// <returns>The projected timestamp</returns>
        public static DateTimeOffset DoSampling(DateTimeOffset value, bool local, string firstDay, int factor = 1)
        {
            var timezone = GetTimeZone();

            if (local && timezone != null)
            {
                var dt = TimeZoneSource.ConvertUtcToLocal(value, timezone);
                value = new DateTimeOffset(dt.Year, dt.Month, dt.Day, dt.Hour, dt.Minute, dt.Second, default(TimeSpan));
            }

            var offset = ProjectByDayOfWeek.GetOffset(value.DayOfWeek, firstDay, factor);

            value = value.AddDays(offset);

            return(new DateTimeOffset(value.Year, value.Month, value.Day, NatualValues.Hour, NatualValues.Minute, NatualValues.Second, value.Offset));
        }
Example #3
0
        /// <summary>
        /// Do the sampling
        /// </summary>
        /// <param name="value">The timestamp</param>
        /// <param name="local">use UTC time zone</param>
        /// <param name="factor">use factor of the time unit</param>
        /// <returns>The projected timestamp</returns>
        public static DateTimeOffset DoSampling(DateTimeOffset value, bool local, int factor = 1)
        {
            var timezone = GetTimeZone();

            if (local && timezone != null)
            {
                var dt = TimeZoneSource.ConvertUtcToLocal(value, timezone);
                value = new DateTimeOffset(dt.Year, dt.Month, dt.Day, dt.Hour, dt.Minute, dt.Second, default(TimeSpan));
            }

            var second = value.Second;

            if (factor != 1)
            {
                var reminder = second % factor;
                if (reminder != 0)
                {
                    second = second - reminder;
                }
            }

            return(new DateTimeOffset(value.Year, value.Month, value.Day, value.Hour, value.Minute, second, value.Offset));
        }
Example #4
0
        /// <summary>
        /// Do the sampling
        /// </summary>
        /// <param name="value">The timestamp</param>
        /// <param name="local">use UTC time zone</param>
        /// <param name="firstDay">The first day of the week</param>
        /// <param name="factor">use factor of the time unit</param>
        /// <returns>The projected timestamp</returns>
        public static DateTimeOffset DoSampling(DateTimeOffset value, bool local, string firstDay = "sunday", int factor = 1)
        {
            var timezone = GetTimeZone();

            if (local && timezone != null)
            {
                var dt = TimeZoneSource.ConvertUtcToLocal(value, timezone);
                value = new DateTimeOffset(dt.Year, dt.Month, dt.Day, dt.Hour, dt.Minute, dt.Second, default(TimeSpan));
            }

            if (firstDay.ToLower() == "monday")
            {
                return(new DateTimeOffset(NatualValues.YearFirstWeekMonday1970, NatualValues.MonthFirstWeekMonday1970, NatualValues.DayOfWeekMonday1970, value.Hour, value.Minute, value.Second, value.Offset));
            }
            else if (firstDay.ToLower() == "saturday")
            {
                return(new DateTimeOffset(NatualValues.Year, NatualValues.Month, NatualValues.DayOfWeekSaturday1970, value.Hour, value.Minute, value.Second, value.Offset));
            }
            else
            {
                return(new DateTimeOffset(NatualValues.Year, NatualValues.Month, NatualValues.DayOfWeekSunday1970, value.Hour, value.Minute, value.Second, value.Offset));
            }
        }