C#:从/向XML读取/写入DateTime

Pan*_*yay 6 c# xml

我需要知道在/ xml中写入/读取DateTime的最佳方式.我应该直接将DateTime写入XML或DateTime.ToString()到XML中.

第二个问题是如何从xml中读取日期元素.可以使用铸造; (DateTime)rec.Element("Date").value或我需要像这样解析字符串DateTime.Parse(rec.Element("Date").value)

Jon*_*eet 18

您可以使用XElementXAttribute使用LINQ to XML,但是...而不是字符串本身.LINQ to XML使用标准XML格式,与您的文化设置无关.

样品:

using System;
using System.Xml.Linq;

class Test
{    
    static void Main()
    {
        DateTime now = DateTime.Now;
        XElement element = new XElement("Now", now);

        Console.WriteLine(element);
        DateTime parsed = (DateTime) element;
        Console.WriteLine(parsed);
    }
}
Run Code Online (Sandbox Code Playgroud)

输出给我:

<Now>2011-01-21T06:24:12.7032222+00:00</Now>
21/01/2011 06:24:12
Run Code Online (Sandbox Code Playgroud)

  • @Pankaj:*格式*不是开始值的一部分.你绝对不应该**只是在DateTime上调用`ToString`.这将获得XML,这取决于您运行它的计算机的文化."03/05/2011"是指什么 - 5月3日或3月5日?除非你也有格式信息(*不是值*的一部分),否则它是不明确的.XML格式是标准化的,不会受此问题的影响. (4认同)
  • @Justin:查看`XElement`文档 - 它提供了一个自定义的显式转换.如果没有,它将在编译时失败. (2认同)

Jas*_*ams 6

@Jon Skeet的答案的替代方法是使用"往返"格式将DateTime转换为字符串.这会将其转换为可以保存和加载的格式,而不会丢失任何信息.

string dataToSave = myDateTime.ToString("o");
Run Code Online (Sandbox Code Playgroud)

然后使用DateTime.Parse()再次转换回来.我链接到的页面有一些示例,向您展示如何转换为字符串格式/从字符串格式转换.您需要做的就是将此字符串存储到XML中.这使您可以更好地控制数据的存储方式(如果您想要更多控制,那就是).


Øyv*_*aar 5

您可以使用XmlConvert类与字符串进行转换.