コード例 #1
0
        public static void GetSolarDataForTodayAsync()
        {
            DateTime   today      = DateTime.Today;
            double     latitude   = Double.Parse((string)ApplicationData.Current.LocalSettings.Values["Latitude"]);
            double     longitude  = Double.Parse((string)ApplicationData.Current.LocalSettings.Values["Longitude"]);
            SolarTimes solarTimes = new SolarTimes(today, latitude, longitude);

            SunRiseToday = solarTimes.Sunrise;
            SunSetToday  = solarTimes.Sunset;
        }
コード例 #2
0
        private void Caclulate(DateTime date, int numdays, string id, int studyID, string act_timezone_property)
        {
            Days              = new List <Daylight>();
            targetdate        = date;
            TimeZoneActigraph = LookupTimeZone(act_timezone_property);

            var zipCodes = ZipCodeSource.FromMemory().GetRepository();

            SQL_utils sql = new SQL_utils("backend");

            string code = String.Format("select  left(zip,5) from trk.vwMasterStatus_S a where id='{0}' and studyID={1}"
                                        , id, studyID);
            string myDBzip = sql.StringScalar_from_SQLstring(code);

            sql.Close();

            if (myDBzip.Contains("Error"))
            {
                Zip            = "98195";
                ZipDerivedFrom = "Default (address in DB is null)";
            }
            else
            {
                Zip            = myDBzip;
                ZipDerivedFrom = "address in DB";
            }


            var myzipinfo = zipCodes.Get(Zip);

            Place = String.Format("{0}, {1}", myzipinfo.PlaceName, myzipinfo.StateAbbreviation);



            Lat = myzipinfo.Latitude;
            Lng = myzipinfo.Longitude;

            TimeZoneApiResultZip = LookupApiTimeZone(Lat, Lng);

            //TimeZoneZip = LookupTimeZone(myzipinfo.Latitude, myzipinfo.Longitude);

            for (int i = 0; i < numdays; i++)
            {
                DateTime   tempdate   = date.AddDays(i);
                SolarTimes solarTimes = new SolarTimes(tempdate, myzipinfo.Latitude, myzipinfo.Longitude);
                Daylight   day        = new Daylight()
                {
                    Targetdate = tempdate,
                    Sunrise    = TimeZoneInfo.ConvertTimeFromUtc(solarTimes.Sunrise.ToUniversalTime(), TimeZoneActigraph),
                    Sunset     = TimeZoneInfo.ConvertTimeFromUtc(solarTimes.Sunset.ToUniversalTime(), TimeZoneActigraph)
                };

                Days.Add(day);
            }
        }
コード例 #3
0
        private void PopulateSunriseSunset(WeatherDto dto, DateTime today)
        {
            var timesToday    = new SolarTimes(DateTimeOffset.Now, Settings.Latitude, Settings.Longitude);
            var timesTomorrow = new SolarTimes(DateTimeOffset.Now.AddDays(1), Settings.Latitude, Settings.Longitude);

            dto.SunriseTime   = $"{timesToday.Sunrise:HH:mm}";
            dto.SolarNoonTime = $"{timesToday.SolarNoon:HH:mm}";
            dto.SunsetTime    = $"{timesToday.Sunset:HH:mm}";
            var sunsetDelta = timesTomorrow.Sunset.AddDays(-1) - timesToday.Sunset;

            dto.SunsetDeltaTime = (sunsetDelta >= TimeSpan.Zero ? "+" : "−") + $"{Math.Abs(sunsetDelta.TotalMinutes):0.0}m";
        }
コード例 #4
0
        public void SunsetComparisonTest()
        {
            SolarTimes solarTimes    = TestDirector.SolarTimesInstance(this.TestContext.DataRow);
            DateTime   expectedValue = Convert.ToDateTime(this.TestContext.DataRow["SunsetTime"]);
            DateTime   actualValue   = solarTimes.Sunset;
            TimeSpan   difference    = expectedValue.TimeOfDay.Subtract(actualValue.TimeOfDay);

            if (difference > TestDirector.TimeSpanDelta)
            {
                Assert.Fail(string.Format("The Sunset (Column Z) calculation does not match Excel. The difference is {0}", difference));
            }
        }
コード例 #5
0
        public void SunlightDurationComparisonTest()
        {
            SolarTimes solarTimes    = TestDirector.SolarTimesInstance(this.TestContext.DataRow);
            TimeSpan   expectedValue = TimeSpan.FromMinutes(Convert.ToDouble(this.TestContext.DataRow["SunlightDuration"]));
            TimeSpan   actualValue   = solarTimes.SunlightDuration;
            TimeSpan   difference    = expectedValue - actualValue;

            if (difference > TestDirector.TimeSpanDelta)
            {
                Assert.Fail(string.Format("The Sunlight Duration (Column AA) calculation does not match Excel. The difference is {0}", difference));
            }
        }
コード例 #6
0
        public void SunsetComparisonTest(SolarCalculationsTestData item)
        {
            SolarTimes solarTimes    = TestDirector.SolarTimesInstance(item);
            DateTime   expectedValue = item.SunsetTime;
            DateTime   actualValue   = solarTimes.Sunset;
            TimeSpan   difference    = expectedValue.TimeOfDay.Subtract(actualValue.TimeOfDay);

            if (difference > TestDirector.TimeSpanDelta)
            {
                Assert.Fail($"The Sunset (Column Z) calculation does not match Excel. The difference is {difference}");
            }
        }
コード例 #7
0
        public void SunlightDurationComparisonTest(SolarCalculationsTestData item)
        {
            SolarTimes solarTimes    = TestDirector.SolarTimesInstance(item);
            TimeSpan   expectedValue = TimeSpan.FromMinutes(item.SunlightDuration);
            TimeSpan   actualValue   = solarTimes.SunlightDuration;
            TimeSpan   difference    = expectedValue - actualValue;

            if (difference > TestDirector.TimeSpanDelta)
            {
                Assert.Fail($"The Sunlight Duration (Column AA) calculation does not match Excel. The difference is {difference}");
            }
        }
コード例 #8
0
        public void I_should_be_able_to_calculate_solar_times_based_on_my_location(
            GeoLocation location, DateTimeOffset instant, SolarTimes expectedSolarTimes)
        {
            // Act
            var solarTimes = SolarTimes.Calculate(location, instant);

            // Assert
            solarTimes.Sunrise.AsTimeSpan().Should()
            .BeCloseTo(expectedSolarTimes.Sunrise.AsTimeSpan(), TimeSpan.FromMinutes(3));

            solarTimes.Sunset.AsTimeSpan().Should()
            .BeCloseTo(expectedSolarTimes.Sunset.AsTimeSpan(), TimeSpan.FromMinutes(3));
        }
コード例 #9
0
        public static void ShowSunset()
        {
            // ***
            // *** Geo coordinates of Benton Harbor/Benton Heights in Michigan
            // ***
            TimeZoneInfo est        = TimeZoneInfo.FindSystemTimeZoneById("Eastern Standard Time");
            SolarTimes   solarTimes = new SolarTimes(DateTime.Now, 42.1543, -86.4459);
            DateTime     sunset     = TimeZoneInfo.ConvertTimeFromUtc(solarTimes.Sunset.ToUniversalTime(), est);

            // ***
            // *** Display the sunset
            // ***
            Console.WriteLine($"View the sunset across Lake Michigan from Benton Harbor in Michigan at {sunset.ToLongTimeString()} on {sunset.ToLongDateString()}.");
        }
コード例 #10
0
        public static void GetSolarDataForTomorrow()
        {
            ApplicationDataContainer settings = ApplicationData.Current.LocalSettings;
            var        today      = DateTime.Today;
            var        tomorrow   = today.AddDays(1);
            string     lat        = (string)settings.Values["Latitude"];
            double     latitude   = Double.Parse(lat);
            string     lon        = (string)settings.Values["Longitude"];
            double     longitude  = Double.Parse(lon);
            SolarTimes solarTimes = new SolarTimes(tomorrow, latitude, longitude);

            SunRiseTomorrow = solarTimes.Sunrise;
            SunSetTomorrow  = solarTimes.Sunset;
        }
コード例 #11
0
        public static SolarData GetSolarData(string lat, string lon, DateTime date)
        {
            double latitude  = double.Parse(lat, CultureInfo.InvariantCulture);
            double longitude = double.Parse(lon, CultureInfo.InvariantCulture);

            SolarTimes solarTimes = new SolarTimes(date, latitude, longitude);

            SolarData data = new SolarData();

            data.SunriseTime = solarTimes.Sunrise;
            data.SunsetTime  = solarTimes.Sunset;

            return(data);
        }
コード例 #12
0
        public float CalculateHourAhead(string tip, float ConsiderP, float longitude, float latitude)
        {
            float P = 0;

            if (tip == "Wind")
            {
                if (hourDataPoint.WindSpeed < 3.5)
                {
                    P = 0;
                }
                else if (hourDataPoint.WindSpeed >= 3.5 && hourDataPoint.WindSpeed < 14)
                {
                    P = (float)((hourDataPoint.WindSpeed - 3.5) * 0.035 * 1000);
                }
                else if (hourDataPoint.WindSpeed >= 14 && hourDataPoint.WindSpeed < 25)
                {
                    P = ConsiderP;
                }
                else if (hourDataPoint.WindSpeed >= 25)
                {
                    P = 0;
                }



                //TODO formula za windTurbine
            }
            else if (tip == "Solar")
            {
                double insolation = 0;

                insolation = 990 * (1 - hourDataPoint.CloudCover * hourDataPoint.CloudCover * hourDataPoint.CloudCover);
                double TCell = hourDataPoint.Temperature + 0.025 * insolation;
                if (TCell >= 25)
                {
                    TCell = 25;
                }


                P = (float)(ConsiderP * insolation * 0.00095 * (1 - 0.005 * (TCell - 25)));
                SolarTimes solarTimes = new SolarTimes(DateTime.Now, latitude, longitude);
                DateTime   sunrise    = solarTimes.Sunrise;
                DateTime   sunset     = solarTimes.Sunset;
                if (hourDataPoint.Time > sunset || hourDataPoint.Time < sunrise)
                {
                    P = 0;
                }
            }
            return(P);
        }
コード例 #13
0
        public static async Task GetSolarDataForTodayAsync()
        {
            ApplicationDataContainer settings = ApplicationData.Current.LocalSettings;
            DateTime   today      = DateTime.Today;
            string     lat        = (string)settings.Values["Latitude"];
            double     latitude   = Double.Parse(lat);
            string     lon        = (string)settings.Values["Longitude"];
            double     longitude  = Double.Parse(lon);
            SolarTimes solarTimes = new SolarTimes(today, latitude, longitude);

            SunRiseToday = solarTimes.Sunrise;
            SunSetToday  = solarTimes.Sunset;
            await Library.IsItNowDayOrNight.DayORNightAsync();
        }
コード例 #14
0
        /// <summary>
        /// Creates a SolarTimes instance for use in tests from an instance
        /// of SolarCalculatorTestData.
        /// </summary>
        public static SolarTimes SolarTimesInstance(SolarCalculationsTestData item)
        {
            SolarTimes returnValue = null;

            TimeSpan tzOffset = TimeSpan.FromHours(item.TimeZoneOffset);

            returnValue = new SolarTimes()
            {
                Latitude  = Convert.ToDouble(item.Latitude),
                Longitude = Convert.ToDouble(item.Longitude),
                ForDate   = new DateTimeOffset(item.Date.Add(item.Time.TimeOfDay), tzOffset)
            };

            return(returnValue);
        }
コード例 #15
0
        public static WeatherData GetWeatherData(string lat, string lon, string dateStr)
        {
            DateTime date      = DateTime.Parse(dateStr);
            double   latitude  = Double.Parse(lat, cultureInfo);
            double   longitude = Double.Parse(lon, cultureInfo);

            SolarTimes solarTimes = new SolarTimes(date, latitude, longitude);

            WeatherData data = new WeatherData();

            data.SunriseTime = solarTimes.Sunrise;
            data.SunsetTime  = solarTimes.Sunset;

            return(data);
        }
コード例 #16
0
 private static string CalculateDawn(DateTimeOffset date, double latitudeInput, double longitudeInput, long elevation = 0)
 {
     try
     {
         SolarTimes solarTimes = new SolarTimes(date, latitudeInput, longitudeInput);
         DateTime   sr         = solarTimes.Sunrise;
         DateTime   dt         = Convert.ToDateTime(sr);
         string     text       = dt.ToString("h:mm:ss");
         return(text);
     }
     catch
     {
         Console.WriteLine("Enter valid values. Error validation is yet to be written. ");
         throw;
     }
 }
コード例 #17
0
ファイル: CycleSpecs.cs プロジェクト: qiankunya/LightBulb
        public void Color_configuration_is_calculated_smoothly_throughout_the_whole_cycle()
        {
            // Arrange
            var solarTimes         = new SolarTimes(new TimeOfDay(07, 00), new TimeOfDay(18, 00));
            var transitionDuration = new TimeSpan(01, 30, 00);
            var transitionOffset   = 0;
            var dayConfiguration   = new ColorConfiguration(6600, 1);
            var nightConfiguration = new ColorConfiguration(3600, 0.85);

            // Act
            var lastInstantTime   = TimeSpan.Zero;
            var lastConfiguration = nightConfiguration;

            for (var instantTime = TimeSpan.Zero; instantTime < TimeSpan.FromDays(1); instantTime += TimeSpan.FromMinutes(1))
            {
                var instant = new DateTimeOffset(
                    2019, 01, 01,
                    instantTime.Hours, instantTime.Minutes, instantTime.Seconds,
                    TimeSpan.Zero
                    );

                var configuration = Cycle.InterpolateConfiguration(
                    solarTimes,
                    dayConfiguration,
                    nightConfiguration,
                    transitionDuration,
                    transitionOffset,
                    instant
                    );

                // Assert
                var isHarshJump =
                    Math.Abs(configuration.Temperature - lastConfiguration.Temperature) >=
                    Math.Abs(dayConfiguration.Temperature - nightConfiguration.Temperature) / 2
                    ||
                    Math.Abs(configuration.Brightness - lastConfiguration.Brightness) >=
                    Math.Abs(dayConfiguration.Brightness - nightConfiguration.Brightness) / 2;

                Assert.False(isHarshJump,
                             $"Detected harsh jump in color configuration from {lastInstantTime} to {instantTime}: " +
                             $"{lastConfiguration} -> {configuration}."
                             );

                lastInstantTime   = instantTime;
                lastConfiguration = configuration;
            }
        }
コード例 #18
0
        static void SunriseSunsetDemo()
        {
            SolarTimes solarTimes = new SolarTimes(DateTime.Now);

            // ***
            // *** Geo coordinates
            // ***
            solarTimes.Latitude  = 41.6042880444544;
            solarTimes.Longitude = -88.03034663200378;

            // ***
            // *** Display the sunrise and sunset
            // ***
            Console.WriteLine("Sunrise is at {0} on {1}.", solarTimes.Sunrise.ToLongTimeString(), solarTimes.Sunrise.ToLongDateString());
            Console.WriteLine("Sunset is at {0} on {1}.", solarTimes.Sunset.ToLongTimeString(), solarTimes.Sunset.ToLongDateString());
            Console.WriteLine("The amount of sunlight on {0} is {1} hours, {2} minutes and {3} seconds.", solarTimes.ForDate.DateTime.ToLongDateString(), solarTimes.SunlightDuration.Hours, solarTimes.SunlightDuration.Minutes, solarTimes.SunlightDuration.Seconds);
        }
コード例 #19
0
 private void HandleSunrise(EvalNode evalNode, DateTime start, DateTime dateEnd, double addMinutes)
 {
     if (evalNode.Occurrences == null)
     {
         evalNode.Occurrences = new List <DateTime>();
     }
     while (start.Ticks < dateEnd.Ticks)
     {
         var solarTimes = new SolarTimes(start.ToLocalTime(), Location["latitude"].Value, Location["longitude"].Value);
         var sunrise    = solarTimes.Sunrise;
         sunrise = sunrise.AddMinutes(addMinutes);
         if (IsBetween(sunrise, start, dateEnd))
         {
             sunrise = sunrise.AddSeconds(-sunrise.Second).AddMilliseconds(-sunrise.Millisecond);
             evalNode.Occurrences.Add(sunrise);
         }
         start = start.AddHours(24);
     }
 }
コード例 #20
0
        public static void ShowNauticalDawn()
        {
            // ***
            // *** Geo coordinates of Oak Street Beach in Chicago, IL
            // ***
            // *** NOTE: the .Date is not necessary but is included to demonstrate that time input
            // *** does not affect the output. Time will be returned in the current time zone so it
            // *** will need to be adjusted to the time zone where the coordinates are from (there
            // *** are services that can be used to get time zone from a latitude and longitude position).
            // ***
            TimeZoneInfo cst        = TimeZoneInfo.FindSystemTimeZoneById("Central Standard Time");
            SolarTimes   solarTimes = new SolarTimes(DateTime.Now.Date, 41.9032, -87.6224);
            DateTime     dawn       = TimeZoneInfo.ConvertTimeFromUtc(solarTimes.DawnNautical.ToUniversalTime(), cst);

            // ***
            // *** Display the sunrise
            // ***
            Console.WriteLine($"View the Nautical Dawn across Lake Michigan from Oak Street Beach in Chicago at {dawn.ToLongTimeString()} on {dawn.ToLongDateString()}.");
        }
コード例 #21
0
ファイル: CycleSpecs.cs プロジェクト: qiankunya/LightBulb
        public void Color_configuration_is_calculated_correctly_around_the_edges()
        {
            // Arrange
            var solarTimes         = new SolarTimes(new TimeOfDay(07, 00), new TimeOfDay(18, 00));
            var transitionDuration = new TimeSpan(01, 30, 00);
            var transitionOffset   = 0;
            var dayConfiguration   = new ColorConfiguration(6600, 1);
            var nightConfiguration = new ColorConfiguration(3600, 0.85);

            var instant1 = new DateTimeOffset(
                2019, 01, 01,
                00, 00, 00,
                TimeSpan.Zero
                );

            var instant2 = new DateTimeOffset(
                2019, 01, 01,
                23, 59, 59,
                TimeSpan.Zero
                );

            // Act
            var configuration1 = Cycle.InterpolateConfiguration(
                solarTimes,
                dayConfiguration,
                nightConfiguration,
                transitionDuration,
                transitionOffset,
                instant1
                );

            var configuration2 = Cycle.InterpolateConfiguration(
                solarTimes,
                dayConfiguration,
                nightConfiguration,
                transitionDuration,
                transitionOffset,
                instant2
                );

            // Assert
            configuration1.Should().Be(configuration2);
        }
コード例 #22
0
        public static void ShowCivilDusk()
        {
            // ***
            // *** Geo coordinates of Oak Street Beach in Chicago, IL
            // ***
            // *** NOTE: the .Date is not necessary but is included to demonstrate that time input
            // *** does not affect the output. Time will be returned in the current time zone so it
            // *** will need to be adjusted to the time zone where the coordinates are from (there
            // *** are services that can be used to get time zone from a latitude and longitude position).
            // ***
            TimeZoneInfo est        = TimeZoneInfo.FindSystemTimeZoneById("Eastern Standard Time");
            SolarTimes   solarTimes = new SolarTimes(DateTime.Now, 42.1543, -86.4459);
            DateTime     dusk       = TimeZoneInfo.ConvertTimeFromUtc(solarTimes.DuskCivil.ToUniversalTime(), est);

            // ***
            // *** Display the sunrise
            // ***
            Console.WriteLine($"View the Civil Dusk across Lake Michigan from Benton Harbor in Michigan at {dusk.ToLongTimeString()} on {dusk.ToLongDateString()}.");
        }
コード例 #23
0
        private void RefreshTransitionTimes(DateTime target)
        {
            var geolocation = appOptionsDelegate.CurrentValue.Geolocation;
            var tz          = DetermineTimeZoneId(geolocation.TimeZone);
            var solarTimes  = new SolarTimes(target, geolocation.Latitude, geolocation.Longitude);
            var sunrise     = TimeZoneInfo.ConvertTimeFromUtc(solarTimes.Sunrise.ToUniversalTime(), tz);
            var sunset      = TimeZoneInfo.ConvertTimeFromUtc(solarTimes.Sunset.ToUniversalTime(), tz);
            var midnight    = sunrise.Date;
            var autoTransitionTimeLimits = appOptionsDelegate.CurrentValue.AutoTransitionTimeLimits;

            this.transitionTimes = new AutoTransitionTimes(
                sunrise.Clamp(midnight + autoTransitionTimeLimits.SunriseLower, midnight + autoTransitionTimeLimits.SunriseUpper),
                sunset.Clamp(midnight + autoTransitionTimeLimits.SunsetLower, midnight + autoTransitionTimeLimits.SunsetUpper)
                );
            if (transitionTimes.Day.Date != transitionTimes.Night.Date)
            {
                throw new InvalidOperationException();
            }
            logger.LogInformation($"Auto transition times refreshed | Day: {transitionTimes.Day.ToString(CultureInfo.InvariantCulture)} | Night: {transitionTimes.Night.ToString(CultureInfo.InvariantCulture)}");
        }
コード例 #24
0
ファイル: SchedulerService.cs プロジェクト: mtudury/HomeGenie
 private void HandleSolarNoon(EvalNode evalNode, DateTime start, DateTime dateEnd, double addMinutes)
 {
     if (evalNode.Occurrences == null)
     {
         evalNode.Occurrences = new List <DateTime>();
     }
     while (start.Ticks < dateEnd.Ticks)
     {
         var solarTimes = new SolarTimes(start.ToLocalTime(), Location["latitude"].Value,
                                         Location["longitude"].Value);
         var solarNoon = solarTimes.SolarNoon;
         solarNoon = solarNoon.AddMinutes(addMinutes);
         if (IsBetween(solarNoon, start, dateEnd))
         {
             solarNoon = TruncateDate(solarNoon);
             evalNode.Occurrences.Add(solarNoon);
         }
         start = start.AddHours(24);
     }
 }
コード例 #25
0
        public static SolarCalculatorResult GetSolarTimes(
            DateTime date, double latitude, double longitude)
        {
            var result = new SolarCalculatorResult();

            try
            {
                var solarTimes = new SolarTimes(date, latitude, longitude);
                result.results.sunrise    = solarTimes.Sunrise.ToLongTimeString();
                result.results.sunset     = solarTimes.Sunset.ToLongTimeString();
                result.results.solar_noon = solarTimes.SolarNoon.ToLongTimeString();
                result.results.day_length = solarTimes.SunlightDuration.ToString();
                result.status             = "OK";
            }
            catch (Exception)
            {
                result.results = null;
                result.status  = "ERROR";
            }
            return(result);
        }
コード例 #26
0

        
コード例 #27
0
        public async Task TestSunSet()
        {
            DispatcherMock.Instance.Clear();
            var driver = CreateDriver <SunDriver>(SunDriverFactory.DriverGuidId, SunDriverFactory.SunSetGuid);

            Assert.Equal(1, driver.Children.Count);

            var values = DispatcherMock.Instance.GetValues(DispatchableType.NodeInstance);

            Assert.True(values.Count > 0);
            var busDt = values.First().Value as DateTime?;

            Assert.NotNull(busDt);
            Assert.IsType <DateTime>(busDt);

            var solarTimes = new SolarTimes(DateTime.Now, LatitudeAngle, LongitudeAngle);

            Assert.Equal(solarTimes.Sunset, busDt);

            await driver.Stop();

            DispatcherMock.Instance.Clear();
        }
コード例 #28
0
        public static TimeSpan TimeToNextSunChange(DateTime time, double lat, double lon)
        {
            SolarTimes solarTimes = new SolarTimes(time, lat, lon);
            DateTime   sunrise    = solarTimes.Sunrise;
            DateTime   sunset     = solarTimes.Sunset;

            var now = time;

            if (now < sunrise)
            {
                return(sunrise - now);
            }

            if (now < sunset)
            {
                return(sunset - now);
            }

            SolarTimes tomorrowSolarTimes = new SolarTimes(time + TimeSpan.FromDays(1), lat, lon);
            DateTime   tomorrowSunrise    = tomorrowSolarTimes.Sunrise;

            return(tomorrowSunrise - now);
        }
コード例 #29
0
        public static bool IsDarkOutside(this DateTime value)
        {
            var isOSX    = RuntimeInformation.IsOSPlatform(OSPlatform.OSX);
            var timezone = isOSX ? "Europe/Amsterdam" : "W. Europe Standard Time";

            var west       = TimeZoneInfo.FindSystemTimeZoneById(timezone);
            var solarTimes = new SolarTimes(value.Date, 51.8310915, 4.6580213);

            var now     = TimeZoneInfo.ConvertTimeFromUtc(value.ToUniversalTime(), west);
            var sunset  = TimeZoneInfo.ConvertTimeFromUtc(solarTimes.Sunset.ToUniversalTime(), west);
            var sunrise = TimeZoneInfo.ConvertTimeFromUtc(solarTimes.Sunrise.ToUniversalTime(), west);

            if (now > sunset)
            {
                return(true);
            }
            if (now < sunrise)
            {
                return(true);
            }

            return(false);
        }
コード例 #30
0
        public void Color_configuration_is_calculated_correctly_during_day_time()
        {
            // Arrange
            var solarTimes         = new SolarTimes(new TimeOfDay(07, 00), new TimeOfDay(18, 00));
            var transitionDuration = new TimeSpan(01, 30, 00);
            var dayConfiguration   = new ColorConfiguration(6600, 1);
            var nightConfiguration = new ColorConfiguration(3600, 0.85);

            var instant = new DateTimeOffset(
                2019, 01, 01,
                14, 00, 00,
                TimeSpan.Zero);

            // Act
            var configuration = ColorConfiguration.Calculate(
                solarTimes,
                dayConfiguration,
                nightConfiguration,
                transitionDuration,
                instant);

            // Assert
            configuration.Should().Be(dayConfiguration);
        }