Odd DateTime.Now()行为

时间:2013-05-07 06:41:00

标签: c# datetime timezone

我遇到一个奇怪的问题,当我为了给日志文件加时间戳而调用它时,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

3 个答案:

答案 0 :(得分:8)

尝试改变这个:

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

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

MM =月份而非分钟

答案 1 :(得分:0)

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

您可以简化代码:
只需写下

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

而不是

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

Here您可以找到有关Standart String.Formats Of DateTime

的其他信息

答案 2 :(得分:0)

怎么样

Console.WriteLine("[{0:G}] {1}", DateTime.Now, line);