日期格式yyyy-MM-ddTHH:mm:ssZ

时间:2009-11-13 10:31:22

标签: c#

我认为这应该很简单,但无法得到它:(。 在这种格式中,Z是时区。
T是长时间模式
除了使用

,我怎么能得到这种格式的日期
DateTime dt = DateTime.Now;
Console.WriteLine(dt.ToString("yyyy-MM-ddTHH:mm:ssZ"));

在C#中

10 个答案:

答案 0 :(得分:121)

使用UTC

ISO 8601MSDN datetime formats

Console.WriteLine(DateTime.UtcNow.ToString("s") + "Z");
  

2009-11-13T10:39:35Z

Z 是因为

  

如果时间是UTC,请添加'Z'   没有一个时间后直接   空间。 'Z'是区域指示符   零UTC偏移。 “09:30 UTC”是   因此表示为“09:30Z”或   “0930Z”。 “14:45:15 UTC”将是   “14:45:15Z”或“144515Z”。

如果要包含偏移量

int hours = TimeZoneInfo.Local.BaseUtcOffset.Hours;
string offset = string.Format("{0}{1}",((hours >0)? "+" :""),hours.ToString("00"));
string isoformat = DateTime.Now.ToString("s") + offset;
Console.WriteLine(isoformat);

需要注意的两件事:在时间之后需要+或 - 但显然+在正数上没有显示。根据维基百科,偏移可以是+ hh格式或+ hh:mm。我一直待上几个小时。

据我所知, RFC1123 (HTTP日期,“u”格式化程序)并不意味着提供时区偏移。所有时间都是GMT / UTC。

答案 1 :(得分:58)

Console.WriteLine(DateTime.UtcNow.ToString("o"));  
Console.WriteLine(DateTime.Now.ToString("o"));

输出:

2012-07-09T19:22:09.1440844Z  
2012-07-09T12:22:09.1440844-07:00

答案 2 :(得分:9)

“o”格式与DateTime和DateTimeOffset不同:(

DateTime.UtcNow.ToString("o") -> "2016-03-09T03:30:25.1263499Z"

DateTimeOffset.UtcNow.ToString("o") -> "2016-03-09T03:30:46.7775027+00:00"

我的最终答案是

DateTimeOffset.UtcDateTime.ToString("o")   //for DateTimeOffset type
DateTime.UtcNow.ToString("o")              //for DateTime type

答案 3 :(得分:6)

以{u“和”s“模式查看here。第一个没有'T'分隔符,第二个没有时区后缀。

答案 4 :(得分:4)

单线代码。

var temp   =  DateTime.UtcNow.ToString("yyyy-MM-ddTHH\\:mm\\:ssZ");

答案 5 :(得分:4)

在使用" o" 格式转换为字符串之前,一个选项可能是将DateTime转换为 ToUniversalTime()。例如,

var dt = DateTime.Now.ToUniversalTime();
Console.WriteLine(dt.ToString("o"));

将输出:

2016-01-31T20:16:01.9092348Z

答案 6 :(得分:3)

在C#6+中,您可以使用字符串插值并使其更简洁:

$"{DateTime.UtcNow:s}Z"

答案 7 :(得分:2)

它适用于Salesforce REST API查询日期时间格式

DateTime now = DateTime.UtcNow;
string startDate = now.AddDays(-5).ToString("yyyy-MM-ddTHH\\:mm\\:ssZ");   
string endDate = now.ToString("yyyy-MM-ddTHH\\:mm\\:ssZ");  
//REST service Query 
string salesforceUrl= https://csxx.salesforce.com//services/data/v33.0/sobjects/Account/updated/?start=" + startDate + "&end=" + endDate;

// https://csxx.salesforce.com/services/data/v33.0/sobjects/Account/updated/?start=2015-03-10T15:15:57Z&end=2015-03-15T15:15:57Z

它从Salesforce返回结果,没有任何问题。

答案 8 :(得分:0)

使用:

DateTime.UtcNow.ToString("yyyy-MM-ddThh:mm:ss.fffZ")

结果是:2021-05-26T10:17:38.549Z

答案 9 :(得分:-6)

你可以拆分,它需要更多的代码,但会按你喜欢的方式工作:

DateTime year = DateTime.Now.Year;
DateTime month = DateTime.Now.Month;
DateTime day = DateTime.Now.Day;

等。

最后:

Console.WriteLine(year+month+day+etc.);

这是处理它的一种非常大胆的方式......