从“ System.DateTime”到“ System.DateTimeOffset”的无效转换

时间:2019-04-18 10:51:01

标签: c# datetime json.net

我做了很多搜索,但没有提出任何可以解释我的问题的东西,我无疑是微不足道的。

我已从NuGet将Json.NET 12.0.1导入到我的项目中。

在下面的代码行中

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();

        }
    }
}

0 个答案:

没有答案