我有一个想要格式化为"2009-09-01T00:00:00.000Z
“的DateTime,但是下面的代码给了我"2009-09-01T00:00:00.000+01:00
”(两行代码):
new DateTime(2009, 9, 1, 0, 0, 0, 0, DateTimeKind.Utc).ToString("yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'fffzzz")
new DateTime(2009, 9, 1, 0, 0, 0, 0, DateTimeKind.Utc).ToUniversalTime().ToString("yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'fffzzz")
有什么办法让它工作吗?
发布于 2009-12-01 00:45:22
string foo = yourDateTime.ToUniversalTime()
.ToString("yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'fff'Z'");
发布于 2017-02-10 16:13:41
string.Format("{0:yyyy-MM-ddTHH:mm:ss.FFFZ}", DateTime.UtcNow)
returns 2017-02-10T08:12:39.483Z
发布于 2016-12-02 03:07:49
有些人指出,‘ToUniversalTime’有点不安全,因为它可能会导致意外的错误时间显示。在此基础上,我提供了一个更详细的解决方案示例。此处的示例为DateTime对象创建了一个扩展,该扩展可以安全地返回UTC DateTime,其中您可以根据需要使用ToString…。。
class Program
{
static void Main(string[] args)
{
DateTime dUtc = new DateTime(2016, 6, 1, 3, 17, 0, 0, DateTimeKind.Utc);
DateTime dUnspecified = new DateTime(2016, 6, 1, 3, 17, 0, 0, DateTimeKind.Unspecified);
//Sample of an unintended mangle:
//Prints "2016-06-01 10:17:00Z"
Console.WriteLine(dUnspecified.ToUniversalTime().ToString("u"));
//Prints "2016 - 06 - 01 03:17:00Z"
Console.WriteLine(dUtc.SafeUniversal().ToString("u"));
//Prints "2016 - 06 - 01 03:17:00Z"
Console.WriteLine(dUnspecified.SafeUniversal().ToString("u"));
}
}
public static class ConvertExtensions
{
public static DateTime SafeUniversal(this DateTime inTime)
{
return (DateTimeKind.Unspecified == inTime.Kind)
? new DateTime(inTime.Ticks, DateTimeKind.Utc)
: inTime.ToUniversalTime();
}
}
https://stackoverflow.com/questions/1820915
复制相似问题