public void CanLoadNodaTimeResourceFromOnePointZeroRelease()
        {
#pragma warning disable 0618
            var source = new TzdbDateTimeZoneSource("NodaTime.Test.TestData.Tzdb2012iFromNodaTime1.0",
                                                    Assembly.GetExecutingAssembly());
#pragma warning restore 0618
            Assert.AreEqual("TZDB: 2012i (mapping: 6356)", source.VersionId);

            var utc = Instant.FromUtc(2007, 8, 24, 9, 30, 0);

            // Test a regular zone with rules.
            var london        = source.ForId("Europe/London");
            var inLondon      = new ZonedDateTime(utc, london);
            var expectedLocal = new LocalDateTime(2007, 8, 24, 10, 30);
            Assert.AreEqual(expectedLocal, inLondon.LocalDateTime);

            // Test a fixed-offset zone.
            var utcFixed   = source.ForId("Etc/UTC");
            var inUtcFixed = new ZonedDateTime(utc, utcFixed);
            expectedLocal = new LocalDateTime(2007, 8, 24, 9, 30);
            Assert.AreEqual(expectedLocal, inUtcFixed.LocalDateTime);

            // Test an alias.
            var jersey   = source.ForId("Japan"); // Asia/Tokyo
            var inJersey = new ZonedDateTime(utc, jersey);
            expectedLocal = new LocalDateTime(2007, 8, 24, 18, 30);
            Assert.AreEqual(expectedLocal, inJersey.LocalDateTime);

            // Can't ask for ZoneLocations
            Assert.Throws <InvalidOperationException>(() => source.ZoneLocations.GetHashCode());
        }
Esempio n. 2
0
            internal Zone(TzdbDateTimeZoneSource source, Dictionary <string, TzdbZoneLocation> locations, string id)
            {
                Id      = id;
                Aliases = source.Aliases[id];
                locations.TryGetValue(id, out var location);
                Location = location == null ? null : new Location(location);
                var zone = source.ForId(id);

                Offsets = zone.GetZoneIntervals(StartOfModernEra, EndOfModernEra)
                          .Select(zi => zi.WallOffset)
                          .Distinct()
                          .OrderBy(x => x)
                          .Select(o => OffsetPattern.GeneralInvariant.Format(o));
            }
        public void ResourceZoneEquivalence()
        {
            var streamSource = TzdbDateTimeZoneSource.Default;

#pragma warning disable 0618
            var resourceSource = new TzdbDateTimeZoneSource("NodaTime.Test.TestData.Tzdb",
                                                            Assembly.GetExecutingAssembly());
#pragma warning restore 0618
            Assert.AreEqual(streamSource.VersionId, resourceSource.VersionId);
            CollectionAssert.AreEquivalent(streamSource.GetIds(), resourceSource.GetIds());

            var interval = new Interval(Instant.FromUtc(1850, 1, 1, 0, 0), Instant.FromUtc(2050, 1, 1, 0, 0));
            var comparer = ZoneEqualityComparer.ForInterval(interval).WithOptions(ZoneEqualityComparer.Options.StrictestMatch);
            foreach (var id in streamSource.GetIds())
            {
                Assert.IsTrue(comparer.Equals(streamSource.ForId(id), resourceSource.ForId(id)),
                              "Zone {0} is equal under stream and resource formats", id);
            }
        }
Esempio n. 4
0
        private static string GetOffset(string timezone)
        {
            var result = "0";

            if (_tzdbDateTimeZoneSource == null)
            {
                using (var stream = File.OpenRead($"{AppDomain.CurrentDomain.BaseDirectory}GeoDb\\tzdb2019c.nzd"))
                {
                    _tzdbDateTimeZoneSource = TzdbDateTimeZoneSource.FromStream(stream);
                }
            }

            var zonedDateTime = _tzdbDateTimeZoneSource.ForId(timezone)
                                .AtStrictly(new LocalDateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day, DateTime.Now.Hour, DateTime.Now.Minute));

            result = TimeSpan.FromMilliseconds(zonedDateTime.Offset.Milliseconds).TotalHours.ToString();

            return(result);
        }
Esempio n. 5
0
        public StatsProvider()
        {
            if (string.IsNullOrEmpty(LogDirectory))
            {
                LogDirectory = @"C:\Users\Brady\Documents\BTLogs2";
            }

            logFiles = Directory.EnumerateFiles(LogDirectory) as IEnumerable <string>;

            usernameMetric       = new LoginUsernames();
            loginCountMetric     = new LoginCounter();
            loginTimeMetric      = new LoginTimeAccumulator();
            messageCountMetric   = new TotalMessages();
            emoteCountMetric     = new UserEmotes();
            firstLastLoginMetric = new FirstLastLogin();

            TzdbDateTimeZoneSource tzSource = TzdbDateTimeZoneSource.Default;

            dailyLoginTimeMetrics = new List <LoginTimePerDay>()
            {
                new LoginTimePerDay(timezone: tzSource.ForId("US/Pacific")),
                new LoginTimePerDay(timezone: tzSource.ForId("US/Mountain")),
                new LoginTimePerDay(timezone: tzSource.ForId("US/Central")),
                new LoginTimePerDay(timezone: tzSource.ForId("US/Eastern")),
                new LoginTimePerDay(timezone: tzSource.ForId("Europe/London")),
                new LoginTimePerDay(timezone: tzSource.ForId("Europe/Berlin")),
                new LoginTimePerDay(timezone: tzSource.ForId("Europe/Athens")),
                new LoginTimePerDay(timezone: tzSource.ForId("Asia/Hong_Kong")),
                new LoginTimePerDay(timezone: tzSource.ForId("Asia/Tokyo")),
            };

            metrics = new List <IMetric>()
            {
                usernameMetric,
                loginCountMetric,
                loginTimeMetric,
                messageCountMetric,
                emoteCountMetric,
                firstLastLoginMetric
            };
            metrics.AddRange(dailyLoginTimeMetrics);

            CancellationTokenSource cts = new CancellationTokenSource();

            InitializeTask = Task.Factory.StartNew(() =>
            {
                return(this.CheckForNewFiles(cts.Token));
            })
                             .Unwrap()
                             .ContinueWith(task =>
            {
                foreach (var file in Directory.EnumerateFiles(LogDirectory))
                {
                    using (FileReader reader = new FileReader(file, metrics))
                    {
                        reader.ReadLines();
                    }
                    Console.WriteLine($"Done processing {file}");
                }
            });
        }