代码如下:
ordID
为一台机器提供正确的输出(日期/时间格式没有变化):
Console.WriteLine($"-b \"{DateTime.Now.AddHours(-2):M/d/yyyy hh:mm:ss}\"");
但是当我在另一台机器上运行代码时(日期/时间格式发生变化),我没有得到预期的输出:
-b "6/19/2018 07:45:44"
出了什么问题?我是否需要添加" Invariant Culture"等?
答案 0 :(得分:5)
指定日期&时间格式,使用当前线程文化执行。如果您没有指定线程文化,则默认情况下它取自计算机的文化。因此,当您在具有两种不同文化的两台不同计算机上运行相同的代码时,您可能会得到两个不同的日期和时间。时间格式。
使用您拥有的格式,/
是日期分隔符,:
是时间分隔符。它们都被线程文化的日期和时间分隔符替换。在您的方案中,似乎第二台计算机上的日期分隔符为-
,这就是您所获得的。
要使用/
和:
,无论机器的文化如何,请用单引号将它们包围起来:
Console.WriteLine($"-b \"{DateTime.Now.AddHours(-2):M'/'d'/'yyyy hh':'mm':'ss}\"");