【问题标题】:use C# to output date and time to XML file使用 C# 将日期和时间输出到 XML 文件
【发布时间】:2014-07-25 04:38:03
【问题描述】:

我正在用 c# 编写一个将对象序列化为 XML 的程序

我在使用日期和时间字段时遇到问题,它们不会在 XML 中生成以下输出:

2014-05-13T00:00:00
0000000T18:35:00

我在我的程序中声明了以下字段:

public DateTime startDate
public DateTime startTime

谁能帮助将日期正确输出到 XML 文件?

谢谢

【问题讨论】:

  • 什么是000000000T?
  • 只是好奇:如果日期和时间指的是同一个事件(开始),为什么需要拆分它们?
  • 如果您能提供示例代码、预期输出和实际输出,那将非常有帮助...
  • 您不需要 2 个 DateTime 变量来存储日期和时间。

标签: c# xml datetime


【解决方案1】:

如果字段startTime 存储带有时区的时间,那么请注意xs:time 数据类型的文字结构是

hh:mm:ss[Z|(+|-)hh:mm]

0000000T18:35:00 好像无效。

【讨论】:

  • 我最终使用了它,它很有效:startDate = DateTime.TryParse("2014/5/13", out scheduleDate) ? scheduleDate.ToString("dd-MM-yyyy") : "";感谢您的帮助
  • 酷。我相信你想忽略时间并只保存日期信息。如果您想包含时间,则为 scheduleDate.ToString("R") 包含时区或 scheduleDate.ToString("F") 不包含。
【解决方案2】:

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");

【讨论】:

    【解决方案3】:

    您不必声明 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关于格式化日期时间。

    【讨论】:

    • 我最终使用了它,它很有效:startDate = DateTime.TryParse("2014/5/13", out scheduleDate) ? scheduleDate.ToString("dd-MM-yyyy") : "";感谢您的帮助
    猜你喜欢
    • 2011-07-22
    • 1970-01-01
    • 2020-11-29
    • 1970-01-01
    • 1970-01-01
    • 2014-05-13
    • 2021-12-08
    相关资源
    最近更新 更多