【问题标题】:Millisecond formatting in .Net DateTime.Net DateTime 中的毫秒格式
【发布时间】:2016-03-15 06:34:57
【问题描述】:

我正在格式化用于 XML 的 DateTime,并且正在使用 ISO 8601 格式化程序“o”。我注意到这会产生如下结果:

2015-10-21T05:06:25.3800000-05:00

其他软件的类似输出似乎只包含 3 个位置的毫秒部分,例如:

2015-10-21T05:06:25.380-05:00

除了在文件中占用更多空间之外,还有多余的零有什么问题吗?是否有一些选项可以在不使用自定义格式化程序的情况下使用 .Net 中的较短版本进行格式化?我更喜欢使用“o”格式选项,所以不管它是否兼容都是一个明智的选择。

【问题讨论】:

  • 考虑到毫秒是3位数,为什么还需要更多?
  • @ChuckSavage,我很确定 OP 只喜欢三个,但正在考虑是否值得将简单的 "o" 格式说明符换成从头开始的格式。
  • 根据Wikipedia,“小数的小数位数没有限制。”所以问题是你正在与之通信的软件是否可以理解这种格式。如果不是,则必须编写自定义格式字符串(.NET 的“o”等于"yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'fffffffK"

标签: c# xml datetime datetime-format


【解决方案1】:

如果您非常重视准确的日期/时间,请考虑使用NodaTime

如果您担心空间问题,请考虑自己的格式化程序,但当前方法的简单性(与“o”相同)。什么值得您花时间、易于编程(考虑以下几点)或磁盘空间?

XElement xdate = new XElement("date", DateTime.Now);
DateTime dnow = (DateTime)xdate;

你会注意到输出看起来像“o”,但不同(我的是 -07:00),因为我在不同的时区。

<date>2015-12-09T15:34:02.0177724-07:00</date>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-11-03
    • 2021-05-26
    • 2014-10-11
    • 2015-01-10
    • 2012-09-09
    • 2011-02-21
    相关资源
    最近更新 更多