我认为这应该很简单,但无法得到它:(。
在这种格式中,Z是时区。
T是长时间模式
除了使用
DateTime dt = DateTime.Now;
Console.WriteLine(dt.ToString("yyyy-MM-ddTHH:mm:ssZ"));
在C#中
答案 0 :(得分:121)
ISO 8601(MSDN 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.);
这是处理它的一种非常大胆的方式......