猿问

反序列化用XmlElement注释的具有DataType时间的属性时

当我使用来反序列化时间字符串时XmlSerializer.Deserialize,我希望它考虑到我当地的时区,以便采用以下格式的时间字符串


00:00:00.0000000+01:00

被解析为00:00,因为我所在的时区为GMT + 1。


我说错了吗?


这是我正在测试xml反序列化的代码:


using System;

using System.IO;

using System.Xml.Serialization;

using Microsoft.VisualStudio.TestTools.UnitTesting;


namespace Testing

{

    [TestClass]

    public class FooTest

    {

        [TestMethod]

        public void Test()

        {

            var serializer = new XmlSerializer(typeof(Foo),

                new XmlRootAttribute("Foo"));


            var xml = "<Foo><TheTime>00:00:00.0000000+01:00</TheTime></Foo>";


            var stream = new MemoryStream();

            var writer = new StreamWriter(stream);

            writer.Write(xml);

            writer.Flush();

            stream.Position = 0;


            var f = (Foo) serializer.Deserialize(stream);


            Assert.AreEqual("00:00", f.TheTime.ToShortTimeString()); // actual: 01:00

        }


        [Serializable]

        public class Foo

        {

            [XmlElement(DataType = "time")]

            public DateTime TheTime { get; set; }

        }

    }

}


元芳怎么了
浏览 309回答 1
1回答
随时随地看视频慕课网APP
我要回答