JObject.Parse转化jsonstring带时区时间会被自动转化而不是保留原来的值

using FluentAssertions;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;

namespace DemoUnitTest;

public class UnitTest1
{
    [Fact]
    public void Test1()
    {
        //
        var settings = new JsonSerializerSettings()
        {
            //不对时间进行处理,单纯把它当作字符串
            DateParseHandling = DateParseHandling.None
        };
        //测试json string的时间问题
        var student1 = new TestStudent()
        {
            //东八区
            Birthday = "2025-07-16T12:00:00+08:00",
            //utc+10 
            Birthday2 = "2025-07-16T12:00:00+10:00"
        };

        var studentJson = JsonConvert.SerializeObject(student1, Formatting.Indented, settings);

        var deserializeTestStudent = JsonConvert.DeserializeObject<TestStudent>(studentJson, settings);

        //这里会把与你运行的机器的时区不一样的会自动转化,比如我们是+8,则birthday 不会变,而birthday2会变化。
        var jObject = JObject.Parse(studentJson);

        var birthday = jObject["Birthday"]!.Value<string>();
        var birthday2 = jObject["Birthday2"]!.Value<string>();

        var flag = birthday != student1.Birthday || birthday2 != student1.Birthday2 ? true : false;
        

        flag.Should().BeTrue();
        student1.Should().BeEquivalentTo(deserializeTestStudent);

    }

    public class TestStudent
    {
        public string Birthday { set; get; }
        public string Birthday2 { set; get; }
    }

}

调试结果:也可以自己把本地电脑修改时区,时间也会自动被转化。

image-20250716203441021