DataSet 读写xml 之后 时间格式多了时区的问题

故事是这样,我的XML头部,,有这样一个字段,datatime,


    <xs:schema id="PkgDataSet" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
        <xs:element name="PkgDataSet" msdata:IsDataSet="true">
            <xs:complexType>
                <xs:choice maxOccurs="unbounded">
                    <xs:element name="Table" maxOccurs="unbounded">
                        <xs:complexType>
                            <xs:sequence>
                                <xs:element name="ID" type="xs:string" minOccurs="0"/>               
                                <xs:element name="SubFileCreateDate" type="xs:dateTime" minOccurs="0"/>
                            </xs:sequence>
                        </xs:complexType>
                    </xs:element>
                </xs:choice>
            </xs:complexType>
        </xs:element>
    </xs:schema>

然后我用D

         DataSet dataSet =null;


                    dataSet = new DataSet();
                    dataSet.ReadXml(m_strUpdataInfoPath);


                    treeList1.DataSource = dataSet.Tables["Table"].DefaultView;
                   
然后我保存之后,

 dataSet.WriteXml("e:\\tmp.xml");


情况变成这样:


多了+08:00


显然是时区的问题,然后到网上找了好多文章,这还是个相当不好处理的问题.


大意是这样:

dataSet = new DataSet();

此时的dataSet的locate = "zh-CN"

可是,执行完

dataSet.ReadXml(m_strUpdataInfoPath);

之后,变成:en-US


然后,这个贴子里说得清楚:

http://stackoverflow.com/questions/427439/dataset-locale-what-it-does

Sounds like a known TimeZone issue: changing DataSet.Locale won't help.


我改了locate

                    dataSet = new DataSet();
                    dataSet.ReadXml(m_strUpdataInfoPath);

                    //System.Globalization.CultureInfo usCult = new System.Globalization.CultureInfo("zh-CN");//en-US
                    //dataSet.Locale = usCult;


果然没有用.


所以,问题应该是出在xml的序列器上.

这个序列器,认为那个xml是个美国人做的. 这就不好办了.

当然,网上有人自己写序列器,这个太难了,我也不会.


所以,从上面的stack overflow的贴子里找到提示,这样处理:

 dataSet.Tables[0].Columns["SubFileCreateDate"].DateTimeMode = DataSetDateTime.Unspecified;

然后解决了. 很好.

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值