Exemple #1
0
        public async Task SetTimeAsync(DateTime time)
        {
            if ((time.Kind != DateTimeKind.Utc) && (time.Kind != DateTimeKind.Local))
            {
                throw new ArgumentException("DateTime.Kind must be either Utc or Local.", nameof(time));
            }

            JToken resultToken = await this.ExecuteAsync("time", "get_timezone").ConfigureAwait(false);

            int index = resultToken.SelectToken("index").Value <int>();

            if (!TZDictionary.TryGetValue(index, out TimeZoneInfo timeZoneInfo))
            {
                timeZoneInfo = TimeZoneInformationExtensions.FromPOSIXString(resultToken.SelectToken("tz_str").Value <string>());
                TZDictionary.Add(index, timeZoneInfo);
            }

            //time = time.ToUniversalTime();
            time = TimeZoneInfo.ConvertTime(time, timeZoneInfo);

            await this.ExecuteAsync("time", "set_timezone",
                                    new JProperty("year", time.Year),
                                    new JProperty("month", time.Month),
                                    new JProperty("mday", time.Day),
                                    new JProperty("hour", time.Hour),
                                    new JProperty("min", time.Minute),
                                    new JProperty("sec", time.Second),
                                    new JProperty("index", index)).ConfigureAwait(false);
        }
Exemple #2
0
        public async Task <DateTimeOffset> GetTimeAsync()
        {
            JToken resultToken = await this.ExecuteAsync("time", "get_timezone").ConfigureAwait(false);

            int index = resultToken.SelectToken("index").Value <int>();

            if (!TZDictionary.TryGetValue(index, out TimeZoneInfo timeZoneInfo))
            {
                timeZoneInfo = TimeZoneInformationExtensions.FromPOSIXString(resultToken.SelectToken("tz_str").Value <string>());
                TZDictionary.Add(index, timeZoneInfo);
            }

            resultToken = await this.ExecuteAsync("time", "get_time").ConfigureAwait(false);

            DateTime dateTime = new DateTime(
                resultToken.SelectToken("year").Value <int>(), resultToken.SelectToken("month").Value <int>(), resultToken.SelectToken("mday").Value <int>(),
                resultToken.SelectToken("hour").Value <int>(), resultToken.SelectToken("min").Value <int>(), resultToken.SelectToken("sec").Value <int>());

            return(new DateTimeOffset(
                       dateTime.Year, dateTime.Month, dateTime.Day,
                       dateTime.Hour, dateTime.Minute, dateTime.Second,
                       timeZoneInfo.GetUtcOffset(dateTime)));
        }