小编Net*_*Dev的帖子

如何在.NET WCF客户端中忽略DateTime的时区?

WCF客户端从Java Web服务接收Date值,其中以XML格式发送到客户端的日期为:

<sampleDate>2010-05-10+14:00</sampleDate>
Run Code Online (Sandbox Code Playgroud)

现在接收此日期的WCF客户端在时区(+08:00),当客户端反序列化Date值时,它将转换为以下DateTime值:

2010-05-09 18:00 +08:00

但是我们想忽略从服务器发送的+14:00,以便客户端中的序列化Date值为:

2010-05-10

请注意,+ 14:00不一致,可能是+10:00,+ 11:00等,因此无法在客户端使用DateTime转换来获取所需的日期值.

如何在WCF中轻松实现?

提前致谢.

UPDATE

正确的WCF解决方案是否可以实现IClientMessageFormatter?

对我来说最干净的解决方案是如上所述实现IClientMessageFormatter.这是一个例子:

C#代码

public class ClientMessageFormatter : IClientMessageFormatter
{
    IClientMessageFormatter original;

    public ClientMessageFormatter(IClientMessageFormatter actual)
    {
        this.original = actual;
    }

    public void RemoveTimeZone(XmlNodeList nodeList)
    {
        if (nodeList != null)
        {
            foreach (XmlNode node in nodeList)
            {
                node.InnerText = Regex.Replace(node.InnerText, @"[\+\-]\d\d:\d\d", "");
            }
        }
    }

    #region IDispatchMessageFormatter Members

    public object DeserializeReply(Message message, object[] parameters)
    {
        Message newMessage = null;
        Message tempMessage;
        MessageBuffer buffer;
        MemoryStream ms;
        XmlDocument …
Run Code Online (Sandbox Code Playgroud)

wcf timezone datetime

9
推荐指数
2
解决办法
7636
查看次数

标签 统计

datetime ×1

timezone ×1

wcf ×1