在 C# 中将 dateTime 转换为 ISO 格式 yyyy-mm-dd hh:mm:ss [重复]

Posted

技术标签:

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

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

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

【问题讨论】:

这不是 ISO 格式。你错过了T(和可选的 - 时区) 【参考方案1】:

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

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

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

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

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

更多信息:

Standard Date and Time format strings Custom Date and Time Format Strings

【讨论】:

这应该是公认的解决方案。【参考方案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() ?

以上是关于在 C# 中将 dateTime 转换为 ISO 格式 yyyy-mm-dd hh:mm:ss [重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何在 C# 中将字符串转换为 DateTime?

在 C# 中将字符串转换为 DateTime 并写入 SQL

如何在 C# 中将日期字符串转换为 DateTime 对象? [复制]

在 C# 中将 APRIL,03/2013 字符串转换为 DateTime [重复]

在 c# 中将时间字符串转换为不同的 DateTime 格式 [关闭]

在 C# ASP.net 中将文本框内容转换为 DateTime 格式时出错