Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/325.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 发生DateTimeInvalidLocalFormat_C#_Datetime Format - Fatal编程技术网

C# 发生DateTimeInvalidLocalFormat

C# 发生DateTimeInvalidLocalFormat,c#,datetime-format,C#,Datetime Format,我正在尝试获取与UTC时间间隔相关的本地日期时间,我正在执行下面的代码 var dtString =DateTime.UtcNow.ToString(@"yyyy-MM-ddTHH\:mm\:ss.fzzz"); 但每次它都会返回一个异常作为 为什么会出现此异常,如何修复此异常?完整的消息文本可能会回答您的问题: 使用“z”格式调用DateTime.ToString时可能会发生这种情况 说明符,该说明符将在输出中包含本地时区偏移。 在这种情况下,可以使用“Z”格式说明符,该说明符指定 U

我正在尝试获取与UTC时间间隔相关的本地日期时间,我正在执行下面的代码

 var dtString =DateTime.UtcNow.ToString(@"yyyy-MM-ddTHH\:mm\:ss.fzzz"); 
但每次它都会返回一个异常作为


为什么会出现此异常,如何修复此异常?

完整的消息文本可能会回答您的问题:

使用“z”格式调用DateTime.ToString时可能会发生这种情况 说明符,该说明符将在输出中包含本地时区偏移。 在这种情况下,可以使用“Z”格式说明符,该说明符指定 UTC时间,或使用“o”格式字符串,这是推荐的方式 在文本中保留日期时间


格式字符串包含
z
说明符
“yyyy-MM-ddTHH\:MM\:ss.fzzz”
。尝试将其更改为
“yyyy-MM-ddTHH\:MM\:ss.fZZZ”

格式说明符用于显示本地时间和UTC时间之间的偏移量

将其与UTC时间一起使用是没有意义的(因为它始终为0)。这就是你得到警告的原因(感谢@HansPassant的这句话)

您可以:

要打印本地时间和UTC(标准格式)的偏移量:

或者要打印UTC时间和本地时区(实际上是不常见的):

这多少相当于您的代码(如@jeroenmoster中所述):

但是结果字符串根本就不是标准的,并且会导致误解

"2015-02-18T12:08:15.1 +01:00"
读取为本地时间和本地时区,而不是UTC时间和本地时区


此外,您还可以在此处找到有关时区的更多信息和好的示例:

您看过吗?这不是例外,它只是一个调试器警告。按F5继续。如果不想看到它,请使用调试>异常>托管调试助手>取消选中DateTimeInvalidLocalFormat选项。不要为生成一个无意义的字符串而烦恼,UTC日期当然没有UTC偏移量。谢谢@HansPassant,明白了,愚蠢的我没有想到UTC日期和偏移量。这只会在字符串中产生“ZZZ”。这个信息有点误导;“Z”实际上不是一个格式说明符,但末尾的单个“Z”(未经更改地传递)表示UTC时间。
var dtString = DateTime.UtcNow.ToString(@"yyyy-MM-ddTHH\:mm\:ss.f") + " " + DateTime.Now.ToString(@"zzz"); 
var dtString = DateTime.UtcNow.ToString(@"yyyy-MM-ddTHH\:mm\:ss.fzzz"); 
"2015-02-18T12:08:15.1 +01:00"