0

我使用 WebClient 类在 mvc 3 项目中发送响应确认消息。消息从一个项目的一个操作方法发送到另一个项目的操作方法。令人惊讶的是,日期参数是 3 小时后,在接收数据时。

例如,如果我的发送日期正在接收数据是“2012-08-14 13:42:50Z”,我会在另一边看到“2012-08-14 16:42:50Z”。这是我案例的简化代码示例;

NameValueCollection ack = new NameValueCollection();
ack.Add("RESID", form.RESPONSE.ID.ToString());
ack.Add("A_DateTime", DateTime.Now.ToString("u")); //2012-08-14 13:42:50Z

using (var client = new WebClient())
{
    client.Encoding = System.Text.Encoding.UTF8;
    var result = client.UploadValues("http://localhost:11578/HPM/ResponseAck", ack);
}



//HPM Controller:
ResponseAck(HttpPostResponseAckMessage response)
{
    //Here response.Date vale is 2012-08-14 16:42:50Z  ???
}

在我看来,它是关于偷偷摸摸的小连载怪物因为某些文化特定问题而改变它的原因。但我不知道真正的原因所以解决方案。

编辑:

public class HttpPostResponseAckMessage
{
    public int RESID { get; set; }

    public DateTime A_DateTime { get; set; }
}
4

2 回答 2

1

您应该更改当前线程的文化或以固定格式(例如 UTC)转换和处理所有日期。您可以使用以下代码更改线程的当前区域性:

Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture("en-EN");
于 2012-08-14T11:12:12.227 回答
0

好的,我认为它是关于期望 mvc 模型绑定器解析格式化的日期时间。

使用“u”格式的模型绑定器认为日期时间是 UTC。

所以我的解决方案是将属性 A_DateTime 的类型更改为字符串并在内部解析它。

希望这可以帮助像我这样的其他人。谢谢大家。

于 2012-08-14T11:55:44.780 回答