在 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 并写入 SQL
如何在 C# 中将日期字符串转换为 DateTime 对象? [复制]
在 C# 中将 APRIL,03/2013 字符串转换为 DateTime [重复]