在DateTime.UtcNow.ToString(“ o”)上生成错误

时间:2018-12-17 15:48:51

标签: c# .net-core

当我在代码中包含此内容时,为什么.NET Core(2.1版)在dotnet build上抛出错误(不仅仅是警告)

var timestamp = DateTime.UtcNow.ToString("o");
  

Program.cs(78,8):错误CA1305:'DateTime.ToString(string)'的行为可能会根据当前用户的区域设置而有所不同。将对“ Program.SendMessagesForever(ModuleClient,CancellationToken)”中的此调用替换为对“ DateTime.ToString(string,IFormatProvider)”的调用。

我的理解是"o"是否对本地不敏感?!

这是理想的行为吗?如果是这样,您将如何解决?对我来说,仅仅为这个毫无意义的任务实例化FormatProvider似乎是不必要的。

2 个答案:

答案 0 :(得分:3)

  

我的理解是“ o”是否对本地不敏感?!

不是,但是代码分析工具不知道。

来自CA1305: Specify IFormatProvider

  

何时禁止显示警告

     

当可以确定默认格式是正确的选择,并且代码可维护性不是重要的开发重点时,可以从该规则中取消警告。

因此您可以放心地DateTime.UtcNow.ToString("o");取消它。

答案 1 :(得分:2)

使用静态CultureInfo.InvariantCulture属性:

var timestamp = DateTime.UtcNow.ToString("o", 
                    System.Globalization.CultureInfo.InvariantCulture);