1

我遇到了一个奇怪的问题,即 DateTime.Now 在我调用它时返回了不正确的时间,以便为日志文件加上时间戳。有问题的代码如下:

string logDate = DateTime.Now.ToShortDateString();
string logTime = DateTime.Now.ToString("HH:MM:ss");
string wLine = "[" + logDate + " " + logTime + "] " + line;
Console.WriteLine(wLine);

其中“line”变量是传递给该特定方法的字符串。日期很好,logTime 变量中的时间比它应该慢了 20 分钟。运行此应用程序的机器上的时钟是正确的,如果我删除它正在写入的文本文件,它会在应用程序再次运行时重新创建,并且文件本身上创建/修改的标记是正确的。

鉴于文件系统正确报告了文件上的时间,我很难理解为什么 DateTime.Now 慢了 20 分钟——而且我确信这不是 DST 问题,因为我们一次只移动 1 小时。

有没有其他人看到这个问题,或者至少可以指出我正确的方向?

TIA

4

3 回答 3

8

尝试改变这个:

string logTime = DateTime.Now.ToString("HH:MM:ss");

string logTime = DateTime.Now.ToString("hh:mm:ss");

MM = 月不是分钟

于 2013-05-07T06:44:47.427 回答
0

'MM' 表示月份
'mm' 表示分钟

您可以使您的代码更简单:
只需编写

string wLine = "[" + DateTime.Now.ToString("G") + "] " + line;

代替

string wLine = "[" + logDate + " " + logTime + "] " + line;

在这里您可以找到关于Standart String.Formats Of DateTime

于 2013-05-07T06:53:27.020 回答
0

怎么样

Console.WriteLine("[{0:G}] {1}", DateTime.Now, line);
于 2013-05-07T06:54:34.370 回答