【问题标题】:Convert dateTime to ISO format yyyy-mm-dd hh:mm:ss in C# [duplicate]在 C# 中将 dateTime 转换为 ISO 格式 yyyy-mm-dd hh:mm:ss [重复]
【发布时间】:2010-12-27 03:22:47
【问题描述】:

.NET/C# 中是否有标准方法将日期时间对象转换为 ISO 8601 格式 yyyy-mm-dd hh:mm:ss?

或者我需要做一些字符串操作来获取日期字符串吗?

【问题讨论】:

  • 这不是 ISO 格式。你错过了T(和可选的 - 时区)

标签: c# .net


【解决方案1】:

要使用严格的ISO8601,可以使用sSortable)格式字符串:

 myDate.ToString("s"); // example 2009-06-15T13:45:30

这是自定义格式字符串的简写:

myDate.ToString("yyyy'-'MM'-'dd'T'HH':'mm':'ss");

当然,您可以构建自己的自定义格式字符串。

更多信息:

【讨论】:

  • 这应该是公认的解决方案。
【解决方案2】:

可读的 8601 格式没有标准格式。您可以使用自定义格式:

theDate.ToString("yyyy-MM-dd HH':'mm':'ss")

(标准格式“s”会在日期和时间之间给你一个“T”,而不是空格。)

【讨论】:

  • 请注意,这将在美国和法国等地使用/ 作为日期分隔符(如2009/12/16 08:42:16
  • @Fredrik:不,不会。如果我在格式中使用 / ,那么它将使用特定于文化的日期分隔符,但 - 是一个文字字符,不会被其他任何东西替换。
  • @Guffa:你是对的,当然。搞混了,我的错。
  • 现在的“u”呢?请参阅 DateTimeFormatInfo.UniversalSortableDateTimePattern 属性
  • 这是不正确的。该标准在组合日期和时间时需要一个 T。只有在双方同意的情况下才能省略。例如,直接在浏览器中使用它会失败。参考:en.wikipedia.org/wiki/…
【解决方案3】:

添加一些让我感到困惑的信息; 我一直以为这样也能达到同样的效果;

theDate.ToString("yyyy-MM-dd HH:mm:ss")

但是,如果您的当前文化不使用冒号 (:) 作为小时分隔符,而是使用句号 (.),则它可能会返回如下:

2009-06-15 13.45.30

只是想补充一下为什么提供的答案需要保持原样;

theDate.ToString("yyyy-MM-dd HH':'mm':'ss")

:-)

【讨论】:

  • 这完美地将 C# DateTime 转换为 SQLServer smalldatetime。字符串在插入语句中被接受。
  • 这不是 ISO8601。 'T' 必须分隔日期和时间。
  • 他们不断给我错误转换。
【解决方案4】:
date.ToString("o") // The Round-trip ("O", "o") Format Specifier
date.ToString("s") // The Sortable ("s") Format Specifier, conforming to ISO86801

MSDN Standard Date and Time Format Strings

【讨论】:

    【解决方案5】:

    对于像我这样一直使用这种格式的人,我做了一个扩展方法。 我只是想分享,因为我认为它对你有用。

         /// <summary>
        /// Convert a date to a human readable ISO datetime format. ie. 2012-12-12 23:01:12
        /// this method must be put in a static class. This will appear as an available function
        /// on every datetime objects if your static class namespace is declared.
        /// </summary>
        public static string ToIsoReadable(this DateTime dateTime)
        {
            return dateTime.ToString("yyyy-MM-dd HH':'mm':'ss");
        }
    

    【讨论】:

      【解决方案6】:

      DateTime::ToString() 方法有一个字符串格式化程序,可用于以任何所需格式输出日期时间。请参阅 DateTime.ToString Method (String) 了解更多信息。

      【讨论】:

      • myDate.ToString("yyyy'-'MM'-'dd'T'HH':'mm':'ss"); - 对我不起作用。也许试试 String.Format() ?
      猜你喜欢
      • 1970-01-01
      • 2016-12-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-15
      • 1970-01-01
      • 2016-12-25
      相关资源
      最近更新 更多