机器日期时间格式覆盖代码日期时间格式

时间:2018-06-19 04:17:37

标签: c# .net

代码如下:

ordID

为一台机器提供正确的输出(日期/时间格式没有变化):

 Console.WriteLine($"-b \"{DateTime.Now.AddHours(-2):M/d/yyyy hh:mm:ss}\"");

但是当我在另一台机器上运行代码时(日期/时间格式发生变化),我没有得到预期的输出:

-b "6/19/2018 07:45:44"

出了什么问题?我是否需要添加" Invariant Culture"等?

1 个答案:

答案 0 :(得分:5)

指定日期&时间格式,使用当前线程文化执行。如果您没有指定线程文化,则默认情况下它取自计算机的文化。因此,当您在具有两种不同文化的两台不同计算机上运行相同的代码时,您可能会得到两个不同的日期和时间。时间格式。

使用您拥有的格式,/是日期分隔符,:是时间分隔符。它们都被线程文化的日期和时间分隔符替换。在您的方案中,似乎第二台计算机上的日期分隔符为-,这就是您所获得的。

要使用/:,无论机器的文化如何,请用单引号将它们包围起来:

Console.WriteLine($"-b \"{DateTime.Now.AddHours(-2):M'/'d'/'yyyy hh':'mm':'ss}\"");