public static ZonedDateTimeSerializer RegisterSerializer(IDateTimeZoneProvider provider)
        {
            ZonedDateTimeSerializer serializer = new ZonedDateTimeSerializer(provider);

            BsonSerializer.RegisterSerializer(typeof(ZonedDateTime), serializer);
            return(serializer);
        }
        public CreateTemplateValidator(
            IValidator <BillingDate> billingDateValidator,
            IDateTimeZoneProvider dateTimeZoneProvider)
        {
            this.RuleFor(m => m.Name)
            .NotEmpty()
            .Length(Template.NameMinLength, Template.NameMaxLength);

            this.RuleFor(m => m.BillingModeId)
            .Must(Enumeration.ContainsValue <BillingMode>);

            this.RuleFor(m => m.BillingDate)
            .NotNull()
            .SetValidator(billingDateValidator);

            this.RuleFor(m => m.BillingPeriodMonth)
            .NotEmpty()
            .GreaterThan(0);

            this.RuleFor(m => m.BillingPeriodOffsetMonth)
            .NotEmpty()
            .GreaterThan(0).When(m => m.BillingModeId == BillingMode.Prepaid.Id)
            .LessThan(0).When(m => m.BillingModeId == BillingMode.Postpaid.Id);

            this.RuleFor(m => m.TimeZone)
            .NotEmpty()
            .Must(dateTimeZoneProvider.Ids.Contains);
        }
示例#3
0
        public MainPage()
        {
            InitializeComponent();

            _clock = SystemClock.Instance;
            _dateTimeZoneProvider = DateTimeZoneProviders.Tzdb;
        }
示例#4
0
 protected BaseController(
     IClock clock,
     IDateTimeZoneProvider dateTimeZoneProvider)
 {
     this.clock = clock;
     this.dateTimeZoneProvider = dateTimeZoneProvider;
 }
        /// <summary>
        /// Converts a <see cref="DateTime"/> of any <see cref="DateTimeKind"/> to a <see cref="ZonedTime"/> instance for the timezone.
        /// </summary>
        /// <remarks><see cref="DateTimeKind.Unspecified"/> will be treated like <see cref="DateTimeKind.Utc"/></remarks>
        /// <param name="dateTimeOfAnyKind"></param>
        /// <param name="timeZoneId"></param>
        /// <param name="cultureInfo">The see <see cref="CultureInfo"/> to use for localizing timezone strings. Default is <see cref="CultureInfo.CurrentUICulture"/>.</param>
        /// <param name="timeZoneProvider">The <see cref="IDateTimeZoneProvider"/> to use. For performance use a <see cref="DateTimeZoneCache"/>.
        /// <example>
        /// IDateTimeZoneProvider dtzp = new DateTimeZoneCache(TzdbDateTimeZoneSource.Default)
        /// </example>
        /// </param>
        /// <returns>Returns the converted <see cref="DateTime"/> as a <see cref="ZonedTime"/> instance or null, if the <see cref="dateTimeOfAnyKind"/> parameter is null.</returns>
        /// <exception cref="DateTimeZoneNotFoundException">If <see cref="timeZoneId"/> is unknown.</exception>
        public static ZonedTime ToZonedTime(DateTime?dateTimeOfAnyKind, string timeZoneId,
                                            CultureInfo cultureInfo = null, IDateTimeZoneProvider timeZoneProvider = null)
        {
            if (!dateTimeOfAnyKind.HasValue)
            {
                return(null);
            }

            DateTime utcDateTime;

            switch (dateTimeOfAnyKind.Value.Kind)
            {
            case DateTimeKind.Utc:
                utcDateTime = dateTimeOfAnyKind.Value;
                break;

            case DateTimeKind.Local:
                utcDateTime = dateTimeOfAnyKind.Value.ToUniversalTime();
                break;

            default:     //DateTimeKind.Unspecified
                utcDateTime = DateTime.SpecifyKind(dateTimeOfAnyKind.Value, DateTimeKind.Utc);
                break;
            }

            return(ToZonedTime(new DateTimeOffset(utcDateTime), timeZoneId, cultureInfo, timeZoneProvider));
        }
 public TimestampTzHandler(PostgresType postgresType, bool convertInfinityDateTime)
     : base(postgresType)
 {
     _dateTimeZoneProvider    = DateTimeZoneProviders.Tzdb;
     _convertInfinityDateTime = convertInfinityDateTime;
     _bclHandler = new BclTimestampTzHandler(postgresType, convertInfinityDateTime);
 }
示例#7
0
        public TimeZoneController(
            IClock clock,
            IDateTimeZoneProvider dateTimeZoneProvider,
            TzdbDateTimeZoneSource dateTimeZoneSource)
            : base(clock, dateTimeZoneProvider)
        {
            var now = clock.GetCurrentInstant();

            foreach (var temp in dateTimeZoneSource.ZoneLocations)
            {
                var timeZone     = dateTimeZoneProvider.GetZoneOrNull(temp.ZoneId);
                var zoneInterval = timeZone.GetZoneInterval(now);
                var offset       = zoneInterval.WallOffset;

                if (timeZone != null)
                {
                    timeZones.Add(new TimeZoneInformation
                    {
                        Id     = timeZone.Id,
                        Name   = zoneInterval.Name,
                        Offset = offset.ToTimeSpan().Hours
                    });
                }
            }
        }
        public static void ConfigureForNodaTime(this SwaggerGenOptions config, IDateTimeZoneProvider dateTimeZoneProvider)
        {
            var dateTimeZone     = dateTimeZoneProvider[America.NewYork];
            var instant          = SystemClock.Instance.GetCurrentInstant();
            var interval         = new Interval(instant, instant + Duration.FromMilliseconds(182713784L));
            var dateTimeInterval = interval.InZoneStrictly(dateTimeZone);

            var zonedDateTime = dateTimeZone.AtLeniently(instant.InZone(dateTimeZone).LocalDateTime.With(TimeAdjusters.TruncateToMinute));

            var localDateTime  = zonedDateTime.LocalDateTime;
            var localDate      = localDateTime.Date;
            var dateInterval   = localDateTime.Date.GetContainingWeekInterval(IsoDayOfWeek.Monday);
            var localTime      = localDateTime.TimeOfDay;
            var timeInterval   = new TimeInterval(localTime, localTime + Period.FromHours(3) + Period.FromMinutes(45));
            var offsetDateTime = zonedDateTime.ToOffsetDateTime();
            var duration       = Duration.FromDays(2) + Duration.FromHours(3) + Duration.FromMinutes(45);
            var offset         = dateTimeZone.GetUtcOffset(instant);
            var period         = Period.FromTicks(duration.BclCompatibleTicks);

            config.MapStruct(instant);
            config.MapStruct(localDate);
            config.MapStruct(localTime);
            config.MapStruct(localDateTime);
            config.MapStruct(offsetDateTime);
            config.MapStruct(zonedDateTime);
            config.MapStruct(interval);
            config.MapClass(dateInterval);
            config.MapClass(dateTimeInterval);
            config.MapClass(timeInterval);
            config.MapStruct(offset);
            config.MapClass(period);
            config.MapStruct(duration);
            config.MapClass(dateTimeZone);
        }
示例#9
0
        private static void _addDefaultConverters(IList <JsonConverter> converters, IDateTimeZoneProvider provider)
        {
            converters.Insert(0, NodaConverters.InstantConverter);
            converters.Insert(0, NodaConverters.IntervalConverter);
            converters.Insert(0, NodaConverters.LocalDateConverter);
            converters.Insert(0, NodaConverters.LocalDateTimeConverter);
            converters.Insert(0, NodaConverters.LocalTimeConverter);
            converters.Insert(0, NodaConverters.AnnualDateConverter);
            converters.Insert(0, NodaConverters.DateIntervalConverter);
            converters.Insert(0, NodaConverters.OffsetConverter);
            converters.Insert(0, NodaConverters.CreateDateTimeZoneConverter(provider));
            converters.Insert(0, NodaConverters.DurationConverter);
            converters.Insert(0, NodaConverters.RoundtripPeriodConverter);
            converters.Insert(0, NodaConverters.OffsetDateTimeConverter);
            converters.Insert(0, NodaConverters.OffsetDateConverter);

            //converters.Insert(0, NodaConverters.OffsetTimeConverter);
            converters.Add(new NodaPatternConverter <OffsetDateTime>(
                               OffsetDateTimePattern.ExtendedIso, x =>
            {
                if (x.Calendar != CalendarSystem.Iso)
                {
                    throw new ArgumentException("Calendar must be Iso when serializing", typeof(OffsetDateTime).Name);
                }
            }));

            converters.Insert(0, NodaConverters.CreateZonedDateTimeConverter(provider));
        }
示例#10
0
        private void LoadData()
        {
            // init noda time
            using (var stream = File.OpenRead(Directory.GetFiles(_nzdPath)[0]))
            {
                _tzdbSource   = TzdbDateTimeZoneSource.FromStream(stream);
                _tzdbProvider = new DateTimeZoneCache(_tzdbSource);
            }

            // this has to be loaded first
            LoadMetaZones();

            // these can be loaded in parallel
            var actions = new Action[]
            {
                LoadZoneCountries,
                LoadZoneAliases,
                LoadWindowsMappings,
                LoadLanguages
            };

            Task.WhenAll(actions.Select(Task.Run)).Wait();

            // patch the data for any known issues
            PatchData();

            // this has to come last, as it relies on patched data
            LoadSelectionZones();
        }
        /// <summary>
        /// Dumps the contents of a provider to a writer. This is used in both unit tests and TzdbCompiler, so we can validate
        /// that changes to time zone code don't change behaviour. It's not expected to be exposed publicly; this used to
        /// be in NodaTime.CheckZones, but that didn't really prove its worth. It's currently very fix in format and options;
        /// we can make it more flexible later if we want.
        /// </summary>
        internal static void Dump([NotNull] this IDateTimeZoneProvider provider, [NotNull] TextWriter writer)
        {
            Preconditions.CheckNotNull(provider, nameof(provider));
            Preconditions.CheckNotNull(writer, nameof(writer));
            writer.WriteLine("TZDB version: {0}", provider.VersionId);
            foreach (var id in provider.Ids)
            {
                var zone = provider[id];
                writer.WriteLine($"Zone: {zone.Id}");
                var          start         = Instant.FromUtc(1800, 1, 1, 0, 0);
                var          end           = Instant.FromUtc(2100, 1, 1, 0, 0);
                ZoneInterval lastDisplayed = null;

                foreach (var interval in zone.GetZoneIntervals(start, end))
                {
                    writer.WriteLine(interval);
                    lastDisplayed = interval;
                }

                // This will never be null; every interval has at least one zone interval.
                if (lastDisplayed.HasEnd)
                {
                    writer.WriteLine("...");
                    writer.WriteLine(zone.GetZoneInterval(Instant.MaxValue));
                }
                writer.WriteLine();
            }
        }
示例#12
0
 public GeoCoder(TelemetryClient telemetryClient, IOptions <GeoCoderConfiguration> geoCoderOptions, YandexMapsClient yandexMapsClient, ZonedClock clock, IDateTimeZoneProvider dateTimeZoneProvider)
 {
     myTelemetryClient      = telemetryClient;
     myYandexMapsClient     = yandexMapsClient;
     myClock                = clock;
     myDateTimeZoneProvider = dateTimeZoneProvider;
     myGeoCoderOptions      = geoCoderOptions.Value ?? throw new ArgumentNullException(nameof(geoCoderOptions));
 }
        /// <summary>
        /// Configures <seealso cref="HttpConfiguration"/> with everything required for working with NodaTime.
        /// </summary>
        /// <param name="config">An http configuration.</param>
        /// <param name="dateTimeZoneProvider">A date time zone provider.</param>
        public static void ConfigureForNodaTime(this HttpConfiguration config, IDateTimeZoneProvider dateTimeZoneProvider)
        {
            // Configure serialization for NodaTime
            config.Formatters.JsonFormatter.SerializerSettings.ConfigureForNodaTime(dateTimeZoneProvider);

            // Adds action value binder for NodaTime model binders
            config.Services.Replace(typeof(IActionValueBinder), new ActionValueBinder(dateTimeZoneProvider));
        }
 internal ZonedDateTimePatternParser(ZonedDateTime templateValue, ZoneLocalMappingResolver resolver, IDateTimeZoneProvider zoneProvider)
 {
     templateValueDate = templateValue.Date;
     templateValueTime = templateValue.TimeOfDay;
     templateValueZone = templateValue.Zone;
     this.resolver     = resolver;
     this.zoneProvider = zoneProvider;
 }
示例#15
0
 public MovieNightService(BotService bot, IMediator mediator, IDateTimeZoneProvider timeZoneProvider, OmdbClient omdbClient, IClock clock)
 {
     this.bot              = bot;
     this.mediator         = mediator;
     this.timeZoneProvider = timeZoneProvider;
     this.omdbClient       = omdbClient;
     this.clock            = clock;
 }
 public TimeZoneNotifyService(RaidBattlesContext db, IDateTimeZoneProvider dateTimeZoneProvider, DateTimeZone dateTimeZone, IClock clock, ITelegramBotClient bot)
 {
     myDB = db;
     myDateTimeZoneProvider = dateTimeZoneProvider;
     myDateTimeZone         = dateTimeZone;
     myClock = clock;
     myBot   = bot;
 }
示例#17
0
 protected virtual void LoadTimeZoneData()
 {
     using (Stream stream = File.Open(Path.Combine(SharpIrcBotUtil.AppDirectory, Config.TimeZoneDatabaseFile), FileMode.Open, FileAccess.Read, FileShare.Read))
     {
         TzdbDateTimeZoneSource timeZoneSource = TzdbDateTimeZoneSource.FromStream(stream);
         TimeZoneProvider = new DateTimeZoneCache(timeZoneSource);
     }
 }
示例#18
0
 public TimeZoneHelper(
     IDateTimeZoneProvider timeZoneProvider,
     ILogger <TimeZoneHelper> logger = null
     )
 {
     tzSource = timeZoneProvider;
     log      = logger;
 }
 /// <summary>
 ///     Configuration for ServiceStack.Text with everything required to properly serialize and deserialize NodaTime data
 ///     types to and from json.
 /// </summary>
 /// <param name="provider">The time zone provider to use when parsing time zones and zoned date/times.</param>
 /// <returns>A new Noda serializer settings.</returns>
 public static INodaSerializerSettings CreateDefaultSerializersForNodaTime(this IDateTimeZoneProvider provider)
 {
     if (provider == null)
     {
         throw new ArgumentNullException(nameof(provider));
     }
     return(new DefaultNodaSerializerSettings(provider));
 }
 /// <summary>
 /// CTOR.
 /// </summary>
 /// <param name="dateTimeZoneProvider"></param>
 /// <param name="ianaTimeZoneId">The IANA timezone ID to use for converting.</param>
 /// <param name="cultureInfo">The <see cref="CultureInfo"/> to use for converting.</param>
 /// <param name="resolver">The <see cref="ZoneLocalMappingResolver"/> to use for converting.</param>
 public TimeZoneConverter(IDateTimeZoneProvider dateTimeZoneProvider, string ianaTimeZoneId,
                          CultureInfo cultureInfo = null, ZoneLocalMappingResolver resolver = null)
 {
     _dateTimeZoneProvider = dateTimeZoneProvider;
     _timeZoneId           = ianaTimeZoneId;
     _cultureInfo          = cultureInfo;
     _resolver             = resolver;
 }
 public TimeZoneHelper(
     IDateTimeZoneProvider timeZoneProvider,
     ILogger<TimeZoneHelper> logger = null
     )
 {
     tzSource = timeZoneProvider;
     log = logger;
 }
        /// <summary>
        /// Configures MVC model binding and validation for NodaTime types.
        /// </summary>
        /// <param name="options">MVC options.</param>
        /// <param name="dateTimeZoneProvider">A date time zone provider to be used for binding date time zones.
        /// It is recommended to use <see cref="DateTimeZoneProviderFactory.Create"/>.</param>
        /// <returns>The <see cref="MvcOptions"/> provided in <paramref name="options"/>.</returns>
        public static MvcOptions ConfigureForNodaTime(this MvcOptions options, IDateTimeZoneProvider dateTimeZoneProvider)
        {
            NodaTimeTypeConverters.Setup(dateTimeZoneProvider);

            options.Filters.Add(new CheckModelStateAttribute());

            return(options);
        }
 internal ZonedDateTimeParseBucket(ZonedDateTime templateValue, ZoneLocalMappingResolver resolver, IDateTimeZoneProvider zoneProvider)
 {
     Date              = new LocalDatePatternParser.LocalDateParseBucket(templateValue.Date);
     Time              = new LocalTimePatternParser.LocalTimeParseBucket(templateValue.TimeOfDay);
     Zone              = templateValue.Zone;
     this.resolver     = resolver;
     this.zoneProvider = zoneProvider;
 }
示例#24
0
        public static T ConfigureForNodaTime <T>(this T documentStore, IDateTimeZoneProvider zoneProvider)
            where T : IDocumentStore
        {
            var existing = documentStore.Conventions.CustomizeJsonSerializer;

            documentStore.Conventions.CustomizeJsonSerializer = serializer =>
            {
                // Chain any existing serialization conventions
                if (existing != null)
                {
                    existing.Invoke(serializer);
                }

                // Don't do anything if we've already registered them
                if (serializer.Converters.OfType <NodaConverterBase <Instant> >().Any())
                {
                    return;
                }

                // Register standard json converters
                serializer.Converters.Add(CustomPatternBasedJsonConverters.InstantConverter);
                serializer.Converters.Add(NodaConverters.IntervalConverter);
                serializer.Converters.Add(CustomPatternBasedJsonConverters.LocalDateTimeConverter);
                serializer.Converters.Add(NodaConverters.LocalDateConverter);
                serializer.Converters.Add(NodaConverters.RoundtripPeriodConverter);
                serializer.Converters.Add(NodaConverters.InstantDictionaryKeyConverter);
                serializer.Converters.Add(NodaConverters.LocalDateDictionaryKeyConverter);
                serializer.Converters.Add(NodaConverters.LocalDateTimeDictionaryKeyConverter);
                serializer.Converters.Add(NodaConverters.LocalTimeDictionaryKeyConverter);

                // Register custom json converters
                serializer.Converters.Add(new LocalTimeConverter());
                serializer.Converters.Add(new NodaDateTimeZoneConverter(zoneProvider));
                serializer.Converters.Add(new OffsetConverter());
                serializer.Converters.Add(new DurationConverter());
                serializer.Converters.Add(new OffsetDateTimeConverter());
                serializer.Converters.Add(new ZonedDateTimeConverter());
            };

            // Register query value converters
            documentStore.Conventions.RegisterQueryValueConverter <Instant>(CustomQueryValueConverters.InstantConverter);
            documentStore.Conventions.RegisterQueryValueConverter <LocalDateTime>(CustomQueryValueConverters.LocalDateTimeConverter);
            documentStore.Conventions.RegisterQueryValueConverter <LocalDate>(CustomQueryValueConverters.LocalDateConverter);
            documentStore.Conventions.RegisterQueryValueConverter <LocalTime>(CustomQueryValueConverters.LocalTimeConverter, RangeType.Long);
            documentStore.Conventions.RegisterQueryValueConverter <Offset>(CustomQueryValueConverters.OffsetConverter, RangeType.Long);
            documentStore.Conventions.RegisterQueryValueConverter <Duration>(CustomQueryValueConverters.DurationConverter, RangeType.Long);
            documentStore.Conventions.RegisterQueryValueConverter <OffsetDateTime>(CustomQueryValueConverters.OffsetDateTimeConverter);
            documentStore.Conventions.RegisterQueryValueConverter <Period>(CustomQueryValueConverters.PeriodConverter);
            documentStore.Conventions.RegisterQueryValueConverter <ZonedDateTime>(CustomQueryValueConverters.ZonedDateTimeConverter);
            documentStore.Conventions.RegisterQueryValueConverter <DateTimeZone>(CustomQueryValueConverters.DateTimeZoneConverter);

            // Register query translators
            documentStore.Conventions.RegisterCustomQueryTranslator <OffsetDateTime>(x => x.ToInstant(), CustomQueryTranslators.OffsetDateTimeToInstantTranslator);
            documentStore.Conventions.RegisterCustomQueryTranslator <OffsetDateTime>(x => x.LocalDateTime, CustomQueryTranslators.OffsetDateTimeLocalDateTimeTranslator);
            documentStore.Conventions.RegisterCustomQueryTranslator <ZonedDateTime>(x => x.ToInstant(), CustomQueryTranslators.ZonedDateTimeTimeToInstantTranslator);

            return(documentStore);
        }
 internal ZonedDateTimeParseBucket(LocalDate templateDate, LocalTime templateTime,
                                   DateTimeZone templateZone, ZoneLocalMappingResolver resolver, IDateTimeZoneProvider zoneProvider)
 {
     Date              = new LocalDatePatternParser.LocalDateParseBucket(templateDate);
     Time              = new LocalTimePatternParser.LocalTimeParseBucket(templateTime);
     Zone              = templateZone;
     this.resolver     = resolver;
     this.zoneProvider = zoneProvider;
 }
        /// <summary>
        /// Creates an instance of the <see cref="DateTimeZone"/> serializer for the given <see cref="IDateTimeZoneProvider"/>.
        /// </summary>
        /// <param name="provider">The <see cref="IDateTimeZoneProvider"/> to use.</param>
        public DateTimeZoneSerializer(IDateTimeZoneProvider provider)
        {
            if (provider == null)
            {
                throw new ArgumentNullException("provider");
            }

            this._provider = provider;
        }
 public UserSettingsCommandHandler(RaidBattlesContext context, ITelegramBotClient bot, IMemoryCache cache, IClock clock, GeoCoder geoCoder, IDateTimeZoneProvider dateTimeZoneProvider)
 {
     myContext              = context;
     myBot                  = bot;
     myCache                = cache;
     myClock                = clock;
     myGeoCoder             = geoCoder;
     myDateTimeZoneProvider = dateTimeZoneProvider;
 }
示例#28
0
 public TemplatesController(IMapper mapper,
                            ITemplateQuery templateQuery,
                            ITemplateRepository templateRepository,
                            IDateTimeZoneProvider dateTimeZoneProvider)
 {
     _mapper               = mapper;
     _templateQuery        = templateQuery;
     _templateRepository   = templateRepository;
     _dateTimeZoneProvider = dateTimeZoneProvider;
 }
示例#29
0
 private ZonedDateTimePattern(string patternText, NodaFormatInfo formatInfo, ZonedDateTime templateValue,
                              ZoneLocalMappingResolver resolver, IDateTimeZoneProvider zoneProvider, IPattern <ZonedDateTime> pattern)
 {
     this.PatternText   = patternText;
     this.FormatInfo    = formatInfo;
     this.TemplateValue = templateValue;
     this.Resolver      = resolver;
     this.ZoneProvider  = zoneProvider;
     this.pattern       = pattern;
 }
        public static Instant ToInstant(this LocalDateTime local, IDateTimeZoneProvider provider, string timeZoneId)
        {
            var timeZone = provider.GetZoneOrNull(timeZoneId);

            if (timeZone is null)
            {
                throw new ArgumentException(nameof(timeZoneId));
            }

            return(local.InZoneLeniently(timeZone).ToInstant());
        }
示例#31
0
 /// <summary>
 /// Initializes a new instance of the <see cref="NodaTimeSchemaSettings"/> class.
 /// </summary>
 /// <param name="resolvePropertyName">Function that resolves property name by proper naming strategy.</param>
 /// <param name="formatToJson">Function that formats object as json text.</param>
 /// <param name="shouldGenerateExamples">Should the example node be generated.</param>
 /// <param name="dateTimeZoneProvider"><see cref="IDateTimeZoneProvider"/> configured in Startup.</param>
 public NodaTimeSchemaSettings(
     Func <string, string> resolvePropertyName,
     Func <object, string> formatToJson,
     bool shouldGenerateExamples,
     IDateTimeZoneProvider dateTimeZoneProvider = null)
 {
     ResolvePropertyName    = resolvePropertyName;
     FormatToJson           = formatToJson;
     ShouldGenerateExamples = shouldGenerateExamples;
     DateTimeZoneProvider   = dateTimeZoneProvider;
 }
        /// <summary>
        /// Creates an instance of default serializers using the given <see cref="IDateTimeZoneProvider"/>.
        /// </summary>
        /// <param name="provider"></param>
        public DefaultNodaSerializerSettings(IDateTimeZoneProvider provider)
        {
            if (provider == null)
            {
                throw new ArgumentNullException("provider");
            }

            DurationSerializer = NodaSerializerDefinitions.DurationSerializer;
            DateTimeZoneSerializer = NodaSerializerDefinitions.CreateDateTimeZoneSerializer(provider);
            InstantSerializer = NodaSerializerDefinitions.InstantSerializer;
            IntervalSerializer = NodaSerializerDefinitions.ComplexIntervalSerializer;
            LocalDateSerializer = NodaSerializerDefinitions.LocalDateSerializer;
            LocalDateTimeSerializer = NodaSerializerDefinitions.LocalDateTimeSerializer;
            LocalTimeSerializer = NodaSerializerDefinitions.LocalTimeSerializer;
            OffsetSerializer = NodaSerializerDefinitions.OffsetSerializer;
            OffsetDateTimeSerializer = NodaSerializerDefinitions.OffsetDateTimeSerializer;
            PeriodSerializer = NodaSerializerDefinitions.RoundtripPeriodSerializer;
            ZonedDateTimeSerializer = NodaSerializerDefinitions.CreateZonedDateTimeSerializer(provider);
            Provider = provider;
        }
示例#33
0
 /// <summary>
 ///   Removes the given time zone provider from the provider list.
 /// </summary>
 /// <remarks>
 ///   If the provider is not on the list nothing changes.
 /// </remarks>
 /// <param name="provider">The <see cref="IDateTimeZoneProvider" /> to remove.</param>
 /// <returns><c>true</c> if the provider was removed.</returns>
 internal bool RemoveProvider(IDateTimeZoneProvider provider)
 {
     accessLock.AcquireReaderLock(Timeout.Infinite);
     try
     {
         if (providers.Contains(provider))
         {
             LockCookie lockCookie = accessLock.UpgradeToWriterLock(Timeout.Infinite);
             try
             {
                 providers.Remove(provider);
                 timeZoneMap.Clear();
                 idList.Clear();
                 return true;
             }
             finally
             {
                 accessLock.DowngradeFromWriterLock(ref lockCookie);
             }
         }
     }
     finally
     {
         accessLock.ReleaseReaderLock();
     }
     return false;
 }
示例#34
0
 public UserController()
 {
     dateTimeZoneProvider = DateTimeZoneProviders.Tzdb;
 }
示例#35
0
 /// <summary>
 ///   Adds the given time zone provider to the front of the provider list.
 /// </summary>
 /// <remarks>
 ///   Because this adds the new provider to the from of the list, it will be checked first for
 ///   time zone definitions and therefore can override the default system definitions. This
 ///   allows for adding new or replacing existing time zones without updating the system. If
 ///   the provider is already on the list nothing changes.
 /// </remarks>
 /// <param name="provider">The <see cref="IDateTimeZoneProvider" /> to add.</param>
 public static void AddProvider(IDateTimeZoneProvider provider)
 {
     cache.AddProvider(provider);
 }
示例#36
0
 /// <summary>
 ///   Removes the given time zone provider from the provider list.
 /// </summary>
 /// <remarks>
 ///   If the provider is not on the list nothing changes.
 /// </remarks>
 /// <param name="provider">The <see cref="IDateTimeZoneProvider" /> to remove.</param>
 /// <returns><c>true</c> if the provider was removed.</returns>
 public static bool RemoveProvider(IDateTimeZoneProvider provider)
 {
     return cache.RemoveProvider(provider);
 }
示例#37
0
 /// <summary>
 ///   Adds the given time zone provider to the front of the provider list.
 /// </summary>
 /// <remarks>
 ///   Because this adds the new provider to the from of the list, it will be checked first for
 ///   time zone definitions and therefore can override the default system definitions. This
 ///   allows for adding new or replacing existing time zones without updating the system. If
 ///   the provider is already on the list nothing changes.
 /// </remarks>
 /// <param name="provider">The <see cref="IDateTimeZoneProvider" /> to add.</param>
 internal void AddProvider(IDateTimeZoneProvider provider)
 {
     accessLock.AcquireReaderLock(Timeout.Infinite);
     try
     {
         if (!providers.Contains(provider))
         {
             LockCookie lockCookie = accessLock.UpgradeToWriterLock(Timeout.Infinite);
             try
             {
                 providers.AddFirst(provider);
                 timeZoneMap.Clear();
                 idList.Clear();
             }
             finally
             {
                 accessLock.DowngradeFromWriterLock(ref lockCookie);
             }
         }
     }
     finally
     {
         accessLock.ReleaseReaderLock();
     }
 }
示例#38
0
 /// <summary>
 /// Sets the <see cref="DateTimeZoneProvider"/> to the time zone database given.
 /// </summary>
 /// <param name="path">The path of the database file to load, or <see langword="null"/> to use the path in the configuration.
 /// If no path is given in the config, the default NodaTime <see cref="DateTimeZoneProviders.Tzdb"/> will be used.</param>
 /// <returns></returns>
 public static void SetDateTimeZoneProvider(string path = null)
 {
     _dateTimeZoneProvider = LoadTzdb(path);
     _isFromConfig = path == null;
 }
 private CurrentTzdbProvider(IDateTimeZoneProvider provider, ILookup<string, string> aliases)
 {
     _provider = provider;
     _aliases = aliases;
 }