C# DateTime.UtcNow.ToString(";o";上的生成错误

C# DateTime.UtcNow.ToString(";o";上的生成错误,c#,.net-core,C#,.net Core,为什么.NET Core(2.1版)在dotnet build上抛出错误(而不仅仅是警告) var timestamp = DateTime.UtcNow.ToString("o"); Program.cs(78,8):错误CA1305:“DateTime.ToString(string)”的行为可能因当前用户的区域设置而异。将“Program.SendMessagesForver(ModuleClient,CancellationToken)”中的此调用替换为对“DateTime.ToStr

为什么.NET Core(2.1版)在
dotnet build
上抛出错误(而不仅仅是警告)

var timestamp = DateTime.UtcNow.ToString("o");
Program.cs(78,8):错误CA1305:“DateTime.ToString(string)”的行为可能因当前用户的区域设置而异。将“Program.SendMessagesForver(ModuleClient,CancellationToken)”中的此调用替换为对“DateTime.ToString(string,IFormatProvider)”的调用

我的理解是,
“o”
无论如何都不是本地敏感的

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

我的理解是“o”不是本地敏感的吗

事实并非如此,但代码分析工具并不知道这一点

发件人:

何时取消显示警告

当确定默认格式是正确的选择,并且代码可维护性不是重要的开发优先级时,可以安全地禁止此规则发出警告

因此,您可以安全地对
DateTime.UtcNow.ToString(“o”)

我的理解是“o”不是本地敏感的吗

事实并非如此,但代码分析工具并不知道这一点

发件人:

何时取消显示警告

当确定默认格式是正确的选择,并且代码可维护性不是重要的开发优先级时,可以安全地禁止此规则发出警告


因此,您可以安全地对
DateTime.UtcNow.ToString(“o”)

使用静态
CultureInfo.InvariantCulture
属性:

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

使用静态
CultureInfo.InvariantCulture
属性:

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

谢谢你的简短解答!实际上,我会在代码中使用它,因为我发现它比使用pragmas更好。我有点矛盾,我会继续,并接受@CodeCaster的答案,虽然它实际上解释了这个问题。谢谢你的简短解决方案!实际上,我会在代码中使用它,因为我发现它比使用pragmas更好。尽管@CodeCaster的回答实际上解释了这个问题,但我还是有点矛盾,我会继续接受它。