我正在用c#编写一个程序,将对象序列化为XML
我在使用日期和时间字段时遇到问题,他们不会在XML中生成以下输出:
2014-05-13T00:00:00
0000000T18:35:00
我在程序中声明了以下字段:
public DateTime startDate
public DateTime startTime
任何人都可以提供帮助,以便将日期正确输出到XML文件吗?
谢谢
答案 0 :(得分:1)
您不必声明startTime来获取所需的输入。只需像这样解析你的日期时间:
DateTime startDate = new DateTime(2014, 5, 13, 18, 35, 0);
startDate.ToString("yyyy-MM-dd'T'HH:mm:ss.fffffff");//2014-05-13T18:35:00.000000
您还可以查看关于格式化日期时间的answer。
答案 1 :(得分:1)
DateTime
代表日期和时间,所以实际上只有一个变量就足够了:
public DateTime startTimestamp;
然后,您可以从该单个日期时间值创建所需的字符串表示形式,如下所示:
string dateValue = startTimestamp.Date.ToString("yyyy-MM-ddTHH:mm:ss");
问题是“00000000”不是有效日期,因此您需要自己进行格式化:
string timeValue = "00000000T" + startTimestamp.ToString("HH:mm:ss");
问题实际上是您希望将(空)时间部分和(无效)日期部分存储在XML中的原因,您可以将日期和时间存储在一个值或日期和时间中,使用单独的值,如下所示:
string dateTimeValue = startTimestamp.ToString("yyyy-MM-ddTHH:mm:ss");
string dateOnly = startTimestamp.ToString("yyyy-MM-dd");
string timeOnly = startTimestamp.ToString("HH:mm:ss");
答案 2 :(得分:0)
如果字段startTime
正在按时区存储时间,请注意xs:time
数据类型的文字结构为
hh:mm:ss[Z|(+|-)hh:mm]
。
0000000T18:35:00
似乎无效。