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

Saa*_*aar 94 c#

我认为这应该很简单,但无法得到它:(.这种格式Z是时区
.T是长时间模式
我怎么能得到这种格式的日期除了使用

DateTime dt = DateTime.Now;
Console.WriteLine(dt.ToString("yyyy-MM-ddTHH:mm:ssZ"));
Run Code Online (Sandbox Code Playgroud)

在C#中

Chr*_*s S 130

使用UTC

ISO 8601(MSDN日期时间格式)

Console.WriteLine(DateTime.UtcNow.ToString("s") + "Z");
Run Code Online (Sandbox Code Playgroud)

2009-11-13T10:39:35Z

ž是因为存在

如果时间是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);
Run Code Online (Sandbox Code Playgroud)

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

据我所知,RFC1123(HTTP日期,"你"格式化程序)并不意味着给出时区偏移.所有时间都是GMT/UTC.

  • 手动添加Z并不好,你应该使用.ToString("o")因为它会给你正确的输出.如果毫秒是问题,它们应该四舍五入.如果将其添加到本地时间(实际上不是UTC),手动添加Z会产生错误的结果. (5认同)

Ram*_* A. 60

Console.WriteLine(DateTime.UtcNow.ToString("o"));  
Console.WriteLine(DateTime.Now.ToString("o"));
Run Code Online (Sandbox Code Playgroud)

输出:

2012-07-09T19:22:09.1440844Z  
2012-07-09T12:22:09.1440844-07:00
Run Code Online (Sandbox Code Playgroud)

  • 接受的答案是使用格式说明符"s"并在UTC日期的末尾添加Z. 如果你不需要毫秒,这一切都很好,但如果你想要毫秒,你必须使用"o",就像这个答案所示.使用"o"时,毫秒默认显示毫秒数,并且Z已经在UTC日期的末尾附加. (5认同)

Luc*_*asM 10

DateTime与DateTimeOffset的"o"格式不同:(

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

DateTimeOffset.UtcNow.ToString("o") -> "2016-03-09T03:30:46.7775027+00:00"
Run Code Online (Sandbox Code Playgroud)

我的最终答案是

DateTimeOffset.UtcDateTime.ToString("o")   //for DateTimeOffset type
DateTime.UtcNow.ToString("o")              //for DateTime type
Run Code Online (Sandbox Code Playgroud)


Tod*_*ier 10

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

$"{DateTime.UtcNow:s}Z"
Run Code Online (Sandbox Code Playgroud)


ani*_*tha 7

使用:

DateTime.UtcNow.ToString("yyyy-MM-ddThh:mm:ss.fffZ")
Run Code Online (Sandbox Code Playgroud)

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


arc*_*592 6

这里的"你"和"s"模式.首先是没有'T'分隔符,第二个没有时区后缀.


小智 6

一种选择是在使用“o”格式转换为字符串之前将 DateTime 转换为ToUniversalTime()。例如,

var dt = DateTime.Now.ToUniversalTime();
Console.WriteLine(dt.ToString("o"));
Run Code Online (Sandbox Code Playgroud)

它会输出:

2016-01-31T20:16:01.9092348Z
Run Code Online (Sandbox Code Playgroud)


小智 5

单行代码。

var temp   =  DateTime.UtcNow.ToString("yyyy-MM-ddTHH\\:mm\\:ssZ");
Run Code Online (Sandbox Code Playgroud)