将dateTime转换为ISO格式yyyy-mm-dd hh:mm:ss in C#

Chi*_*hin 38 .net c#

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

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

CMS*_*CMS 75

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

 myDate.ToString("s"); // example 2009-06-15T13:45:30
Run Code Online (Sandbox Code Playgroud)

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

myDate.ToString("yyyy'-'MM'-'dd'T'HH':'mm':'ss");
Run Code Online (Sandbox Code Playgroud)

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

更多信息:


Guf*_*ffa 53

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

theDate.ToString("yyyy-MM-dd HH':'mm':'ss")
Run Code Online (Sandbox Code Playgroud)

(标准格式"s"会在日期和时间之间给出"T",而不是空格.)

  • @Fredrik:不,它不会.如果我在格式中使用/那么它将使用特定于文化的日期分隔符,但是 - 是一个文字字符,不会被其他任何东西替换. (6认同)
  • 这是不正确的。该标准要求在组合日期和时间时使用 T。只有双方同意的情况下才可以省略。例如,直接通过浏览器使用它会失败。参考:https://en.wikipedia.org/wiki/ISO_8601#Combined_date_and_time_representations (3认同)

Mic*_*k P 14

添加一些让我困惑的信息; 我一直认为可以像这样实现同样的结果;

theDate.ToString("yyyy-MM-dd HH:mm:ss")
Run Code Online (Sandbox Code Playgroud)

但是,如果您的Current Culture不使用冒号(:)作为小时分隔符,而是使用句点(.),则可以返回如下:

2009-06-15 13.45.30

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

theDate.ToString("yyyy-MM-dd HH':'mm':'ss")
Run Code Online (Sandbox Code Playgroud)

:-)


小智 9

date.ToString("o") // The Round-trip ("O", "o") Format Specifier
date.ToString("s") // The Sortable ("s") Format Specifier, conforming to ISO86801
Run Code Online (Sandbox Code Playgroud)

MSDN标准日期和时间格式字符串