Неверное приведение из «System.DateTime» к «System.DateTimeOffset» - PullRequest
0 голосов
/ 18 апреля 2019

Я много занимался поиском, но не нашел ничего, что могло бы объяснить мою проблему, которая, я не сомневаюсь, тривиальна.

Я импортировал Json.NET 12.0.1 в свой проект изNuGet.

В приведенном ниже коде строка

Console.WriteLine(json.Value<DateTimeOffset>("DateTime"));

выбрасывает

неверное приведение из 'System.DateTime' кИсключение 'System.DateTimeOffset'

, как прокомментировано.

Итак, почему я могу явно привести

json["DateTime"] или json.Value<DateTime>("DateTime") к DateTimeOffset

но не использовать json.Value<DateTimeOffset>("DateTime")?

using Newtonsoft.Json.Linq;
using System;

namespace JSONDates
{
    class Program
    {
        static void Main(string[] args)
        {
            string dt = "2019-04-21T18:27:21.225+01:00";
            string jsonString = string.Format("{{\"DateTime\": \"{0}\"}}", dt);
            JObject json = JObject.Parse(jsonString);

            Console.WriteLine(json.Value<DateTime>("DateTime")); //OK
            Console.WriteLine((DateTimeOffset)json.Value<DateTime>("DateTime")); //OK
            Console.WriteLine(((DateTimeOffset)json["DateTime"])); //OK
            Console.WriteLine(json.Value<DateTimeOffset>("DateTime")); //{"Invalid cast from 'System.DateTime' to 'System.DateTimeOffset'."}
            Console.ReadLine();

        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...