如何在.NET中获取此DateTime格式

时间:2011-09-02 10:11:39

标签: c# .net datetime .net-4.0

我试图将一些DateTime格式化为此W3C DateTime format: -

Complete date plus hours and minutes:
eg. YYYY-MM-DDThh:mmTZD (eg 1997-07-16T19:20+01:00)

where:
 YYYY = four-digit year
 MM   = two-digit month (01=January, etc.)
 DD   = two-digit day of month (01 through 31)
 hh   = two digits of hour (00 through 23) (am/pm NOT allowed)
 mm   = two digits of minute (00 through 59)
 ss   = two digits of second (00 through 59)
 s    = one or more digits representing a decimal fraction of a second
 TZD  = time zone designator (Z or +hh:mm or -hh:mm)

我最初有这个......

var myDateTime = someDateTime.ToString("s",
    System.Globalization.CultureInfo.InvariantCulture);

但是这导致了一串:

2011-08-31T08:46:00

有人可以帮忙吗?

5 个答案:

答案 0 :(得分:5)

您想要"o"

var myDateTime = someDateTime.ToString("o",
System.Globalization.CultureInfo.InvariantCulture);

答案 1 :(得分:4)

使用以下内容:

yourDateTime.ToString( "yyyy-MM-ddTHH:mmK", CultureInfo.InvariantCulture );

以下是关于DateTime格式的更多信息:

http://msdn.microsoft.com/en-us/library/8kb3ddd4.aspx

答案 2 :(得分:2)

我相信你想要

"yyyy-MM-ddTHH:mmK"

注意:

  • HH而不是24小时
  • K指定时区;这取决于DateTime.Kind是UTC还是本地;未指定将以空字符串结束

您应 使用CultureInfo.InvariantCulture以确保不使用任何时髦的文化信息。 (您可以引用-:作为替代,但我会使用不变文化来确定。)

答案 3 :(得分:1)

你可以这样格式化:

someDateTime.ToString("yyyy-MM-dd");

以下是“标准”支持的日期时间格式字符串的文档: http://msdn.microsoft.com/en-us/library/az4se3k1(v=VS.100).aspx

答案 4 :(得分:0)

someDateTime.ToUniversalTime().ToString("u");

会让你非常接近=> '2011-09-02 10:22:48Z'。如果这还不够好,那么您可以创建一个包含“T”的自定义格式字符串(请参阅'Custom Date and Time Format Strings')。