发生 DateTimeInvalidLocalFormat
DateTimeInvalidLocalFormat occurred
我正在尝试参考 UTC 时差获取本地日期时间,我正在执行下面的代码。
var dtString =DateTime.UtcNow.ToString(@"yyyy-MM-ddTHH\:mm\:ss.fzzz");
但每次 return 我都是例外,因为
为什么会出现这个异常,如何解决这个问题?
完整的消息正文可能会回答您的问题:
This can happen when calling DateTime.ToString using the 'z' format
specifier, which will include a local time zone offset in the output.
In that case, either use the 'Z' format specifier, which designates a
UTC time, or use the 'o' format string, which is the recommended way
to persist a DateTime in text.
您的格式字符串包含 z
说明符 "yyyy-MM-ddTHH\:mm\:ss.fzzz"
。尝试将其更改为 "yyyy-MM-ddTHH\:mm\:ss.fZZZ"
.
z
格式说明符用于显示本地时间和 UTC 时间之间的时差。
将它与 UTC 时间一起使用没有意义(因为它始终为 0)。这就是你收到警告的原因(感谢@HansPassant 的评论)。
您可以:
想要打印本地时间和与 UTC 的偏移量(这是标准的):
var dtString = DateTime.Now.ToString(@"yyyy-MM-ddTHH\:mm\:ss.f zzz");
或者想打印UTC时间和本地时区(真的不常见):
var dtString = DateTime.UtcNow.ToString(@"yyyy-MM-ddTHH\:mm\:ss.f") + " " + DateTime.Now.ToString(@"zzz");
这或多或少等同于您的代码(如@JeroenMostert link 中所述):
var dtString = DateTime.UtcNow.ToString(@"yyyy-MM-ddTHH\:mm\:ss.fzzz");
但生成的字符串根本不标准并导致误解。
"2015-02-18T12:08:15.1 +01:00"
读作本地时间和本地时区,而不是UTC时间和本地时区.
您还可以在这里找到更多关于时区的信息和很好的例子:TimeZone.CurrentTimeZone Property
我正在尝试参考 UTC 时差获取本地日期时间,我正在执行下面的代码。
var dtString =DateTime.UtcNow.ToString(@"yyyy-MM-ddTHH\:mm\:ss.fzzz");
但每次 return 我都是例外,因为
为什么会出现这个异常,如何解决这个问题?
完整的消息正文可能会回答您的问题:
This can happen when calling DateTime.ToString using the 'z' format specifier, which will include a local time zone offset in the output. In that case, either use the 'Z' format specifier, which designates a UTC time, or use the 'o' format string, which is the recommended way to persist a DateTime in text.
您的格式字符串包含 z
说明符 "yyyy-MM-ddTHH\:mm\:ss.fzzz"
。尝试将其更改为 "yyyy-MM-ddTHH\:mm\:ss.fZZZ"
.
z
格式说明符用于显示本地时间和 UTC 时间之间的时差。
将它与 UTC 时间一起使用没有意义(因为它始终为 0)。这就是你收到警告的原因(感谢@HansPassant 的评论)。
您可以:
想要打印本地时间和与 UTC 的偏移量(这是标准的):
var dtString = DateTime.Now.ToString(@"yyyy-MM-ddTHH\:mm\:ss.f zzz");
或者想打印UTC时间和本地时区(真的不常见):
var dtString = DateTime.UtcNow.ToString(@"yyyy-MM-ddTHH\:mm\:ss.f") + " " + DateTime.Now.ToString(@"zzz");
这或多或少等同于您的代码(如@JeroenMostert link 中所述):
var dtString = DateTime.UtcNow.ToString(@"yyyy-MM-ddTHH\:mm\:ss.fzzz");
但生成的字符串根本不标准并导致误解。
"2015-02-18T12:08:15.1 +01:00"
读作本地时间和本地时区,而不是UTC时间和本地时区.
您还可以在这里找到更多关于时区的信息和很好的例子:TimeZone.CurrentTimeZone Property