C# REST在序列化时急剧更改时区

C# REST在序列化时急剧更改时区,c#,.net,serialization,timezone,restsharp,C#,.net,Serialization,Timezone,Restsharp,RestSharp在序列化期间更改datetime对象上的时区。例如,当我调试时,原始datetime对象是2015-01-02 00:00:00,但当RestSharp序列化它并使用request.AddBody(object)将其添加到我的请求时,有效负载将日期改为2015-01-01T22:00:00Z。因此,它在2小时内将其转换回时间 我现在在瑞典,那里是GMT+2:00,所以我猜它会默认GMT+0 更新 我从客户端以字符串的形式获取日期,例如“2015-01-02”。 然后我尝试将其解

RestSharp在序列化期间更改datetime对象上的时区。例如,当我调试时,原始datetime对象是
2015-01-02 00:00:00
,但当RestSharp序列化它并使用
request.AddBody(object)
将其添加到我的请求时,有效负载将日期改为
2015-01-01T22:00:00Z
。因此,它在2小时内将其转换回时间

我现在在瑞典,那里是GMT+2:00,所以我猜它会默认GMT+0

更新

我从客户端以
字符串的形式获取日期,例如
“2015-01-02”
。 然后我尝试将其解析为以下代码中的
DateTime
-对象:

if (!string.IsNullOrEmpty(fieldData) && DateTime.TryParse(fieldData, out dateTime)){ 
    budgetUtokad.SlutDatum = dateTime;
}

我需要在这里以某种方式指定
Utc

如果您很高兴收到“给定日期开始时午夜,Utc”,您可以使用:

if (!string.IsNullOrEmpty(fieldData) && 
    DateTime.TryParseExact(
        fieldData,
        "yyyy-MM-dd",
        CultureInfo.InvariantCulture,
        DateTimeStyles.AssumeUniversal | DateTimeStyles.AdjustToUniversal,
        out dateTime)) { 
    budgetUtokad.SlutDatum = dateTime;
}

这在UTC中已经存在,因此RestSharp将输出为“2015-01-02T00:00:00Z”。

如果您很高兴获得“给定日期开始时的午夜,UTC”,您可以使用:

if (!string.IsNullOrEmpty(fieldData) && 
    DateTime.TryParseExact(
        fieldData,
        "yyyy-MM-dd",
        CultureInfo.InvariantCulture,
        DateTimeStyles.AssumeUniversal | DateTimeStyles.AdjustToUniversal,
        out dateTime)) { 
    budgetUtokad.SlutDatum = dateTime;
}

这在UTC中已经存在,因此RestSharp将输出为“2015-01-02T00:00:00Z”。

您所说的
2015-01-02:00:00
到底是什么意思?这是一种非常奇怪的格式,不清楚它的含义。你能提供一个简短但完整的例子来说明发生了什么吗?我已经编辑了这个问题,所以现在可能更容易理解。有一点-但是你的
2015-01-02 00:00:00
值没有任何时区,所以它有点浮动。这并不代表一个特定的时间点。听起来RestSharp将其解释为“本地时区中的时间”,这并非完全不合理。因此,为了使其正常工作,我必须以某种方式指定DateTime对象的时区?这基本上取决于您试图实现的目标。我们仍然不知道您真正想要表达的是什么价值。您所说的
2015-01-02:00:00
到底是什么意思?这是一种非常奇怪的格式,不清楚它的含义。你能提供一个简短但完整的例子来说明发生了什么吗?我已经编辑了这个问题,所以现在可能更容易理解。有一点-但是你的
2015-01-02 00:00:00
值没有任何时区,所以它有点浮动。这并不代表一个特定的时间点。听起来RestSharp将其解释为“本地时区中的时间”,这并非完全不合理。因此,为了使其正常工作,我必须以某种方式指定DateTime对象的时区?这基本上取决于您试图实现的目标。我们仍然不知道您真正想要表达的价值。