コード例 #1
0
        public static List <DateTime> GenerateGasDayHoursUtc(this DateTime gasDay, GasTimeZoneInfo gasTimeZoneInfo)
        {
            var timeZone = TimeZoneInfo.FindSystemTimeZoneById(gasTimeZoneInfo.TimeZoneName);

            var gasDayHours   = new List <DateTime>();
            var startDateTime = new DateTime(gasDay.Year, gasDay.Month, gasDay.Day, gasTimeZoneInfo.GasDayOffset, 0, 0, DateTimeKind.Unspecified);
            var hourlyUtc     = startDateTime.ConvertToUtc(gasTimeZoneInfo.TimeZoneName);

            var totalHours = 24;

            for (var i = 0; i < totalHours; i++)
            {
                var newHourly = hourlyUtc.AddHours(i);
                gasDayHours.Add(newHourly);
                if (timeZone.IsInvalidTime(newHourly))
                {
                    totalHours--;
                }
                if (timeZone.IsAmbiguousTime(newHourly))
                {
                    totalHours++;
                }
            }
            return(gasDayHours);
        }
コード例 #2
0
 public static bool IsWithinGasDay(this DateTime dateTimeUtc, GasTimeZoneInfo gasTimeZoneInfo)
 {
     return(dateTimeUtc.GetGasDay(gasTimeZoneInfo.GasDayOffset, gasTimeZoneInfo.TimeZoneName) ==
            SystemTime.UtcNow().GetGasDay(gasTimeZoneInfo.GasDayOffset, gasTimeZoneInfo.TimeZoneName));
 }
コード例 #3
0
 public static DateTime GetGasDayEndDateTimeUtc(this DateTime gasDay, GasTimeZoneInfo gasTimeZoneInfo)
 {
     return(gasDay.GetGasDayEndDateTimeUtc(gasTimeZoneInfo.GasDayOffset, gasTimeZoneInfo.TimeZoneName));
 }
コード例 #4
0
        public static bool IsGasDayDayAhead(this DateTime gasDayDate, GasTimeZoneInfo gasTimeZoneInfo)
        {
            var utcNowGasDay = SystemTime.UtcNow().GetGasDay(gasTimeZoneInfo.GasDayOffset, gasTimeZoneInfo.TimeZoneName);

            return(gasDayDate == utcNowGasDay.AddDays(1));
        }
コード例 #5
0
 public static IEnumerable <DateTime> GenerateDateRangeGasDayHoursUtc(this DateTime startDate, DateTime endDate, GasTimeZoneInfo gasTimeZoneInfo)
 {
     return(GenerateDailyDateRange(startDate, endDate).SelectMany(day => day.GenerateGasDayHoursUtc(gasTimeZoneInfo)));
 }