C# REST在序列化时急剧更改时区
RestSharp在序列化期间更改datetime对象上的时区。例如,当我调试时,原始datetime对象是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”。 然后我尝试将其解
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对象的时区?这基本上取决于您试图实现的目标。我们仍然不知道您真正想要表达的价值。