【问题标题】:Date Time Format is not Formatting日期时间格式未格式化
【发布时间】:2016-05-03 15:45:52
【问题描述】:

我需要这种格式: aaaa-mm-jjThh:mm:sszzzzzz

并将其放入 XML 属性“DateTime”类型中。

所以,我做到了:

var xmlObj= new xmlObj.tHeader();
xmlObj.prop = DateTime.ParseExact(DateTime.Now.ToString("yyyy'-'MM'-'dd'T'HH':'mm':'ss'Z'"), "yyyy'-'MM'-'dd'T'HH':'mm':'ss'Z'", CultureInfo.InvariantCulture);

Console.WriteLine(xmlObj.prop);

Console.WriteLine 指令返回:03/05/2016 15:43:10

我不明白为什么该属性会删除格式。

在 XSD 中,此属性正在等待日期时间格式。

有什么想法吗?

编辑:

好的,在命令结果中,我看到了默认格式,但是如果将我的 XML 对象转换为文件,格式是正确的:

很奇怪……不过现在好了。非常感谢大家

【问题讨论】:

  • 您需要语音标记还是 yyyy-MM-ddTHH:mm:ssZ 好吗?
  • yyyy-MM-ddTHH:mm:ssZ 很好
  • 只是好奇,xmlObj.tHeader 来自哪里?
  • 一开始,我有一个 XSD 文件。然后我使用命令“xsd.exe”来创建“file.cs”。这就是我使用的
  • 我已经编辑了我的问题。我认为命令行正在格式化日期

标签: c# datetime utc


【解决方案1】:

您正在调用DateTime.ParseExact,它将字符串解析为DateTime 对象。只需删除该部分并将ToString 的结果直接分配给xmlObj.prop,或直接分配DateTime 对象(如果这是它正在寻找的)。

编辑:

为了解决您的编辑问题,您的 XML 文件已正确生成。但是,当您将 DateTime 属性输出到控制台时,它使用日期的默认字符串格式。如果您愿意,可以使用ToString() 对其进行格式化。

【讨论】:

  • 我不能:我有错误“无法将字符串转换为日期时间”
  • 如果需要DateTime,请完全跳过格式并直接指定日期值。
  • 您在代码中所做的是在 DateTimeString 之间进行往返转换 - 这没有实际效果。
  • 即使我把这个:xmlObj.prop = DateTime.UtcNow; //我也有同样的问题
  • 我已经编辑了我的问题。我认为命令行正在格式化日期
【解决方案2】:

你试试这个:

Console.WriteLine(DateTime.UtcNow.ToString("s") + "Z");

【讨论】:

  • 这没关系,但如果我尝试将其放入 'prop' 中,则会出现错误“无法将字符串转换为 DateTime”
【解决方案3】:

你的格式解析错误,如果你想要yyyy-MM-ddTHH:mm:ssz格式,那么你必须将它转换为字符串,否则它将代表标准日期时间,试试这个

xmlObj.prop = DateTime.ParseExact(DateTime.Now.ToString("yyyy-MM-ddTHH:mm:ssZ"), "yyyy-MM-ddTHH:mm:ssZ", CultureInfo.InvariantCulture);
Console.WriteLine(xmlObj.prop.ToString("yyyy-MM-ddTHH:mm:ssz"));

【讨论】:

  • 我试过你的建议,但没有效果
  • 如果xmlObj.prop 是日期时间类型,那么您必须将其转换为您想要的类型字符串,否则它将始终将日期时间打印为您的系统日期时间格式
  • 我已经编辑了我的问题。我认为命令行正在格式化日期
  • 建议将当地时间格式化为 Utc 确实值得怀疑。
猜你喜欢
  • 2019-12-15
  • 2014-12-15
  • 1970-01-01
  • 2021-10-14
  • 1970-01-01
  • 2011-11-20
  • 2018-06-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多