以毫秒为单位创建日志

时间:2013-11-29 14:21:55

标签: c#

我在日志中编写程序的活动,时间戳附加到每一行,格式如下:

DateTime.Now.ToString("MM/dd/yyyy HH:mm:ss FFF")

我原以为毫秒部分总是有3位数。但是会出现以下情况:

11/29/2013 18:53:14 96 -  SessionKey-2rvun1agyw1svcexmqf5dejh-MAC.Master Page_Load - Begin
11/29/2013 18:53:14 975 -  SessionKey-2rvun1agyw1svcexmqf5dejh-MAC.Master Page_Load - End

在第一个中,为什么毫秒部分不是096?

3 个答案:

答案 0 :(得分:4)

来自"FFF" Custom Format Specifier

  

“FFF”自定义格式说明符代表最多三种   秒部分的有效数字;也就是说,它代表了   日期和时间值中的毫秒数。 然而,尾随零或   不显示三位零数字。

编辑:好的,我想我弄清楚这里发生了什么。在原文中,OP的毫秒部分为960而非096

这就是为什么它正如 MSDN 页面中描述的那样。

它在0末尾落后960,而0中没有096

作为解决方案,您可以使用The "fff" Custom Format Specifier代替。在我看来,它不会追踪或引导零。至少它不会写入 MSDN 页面:)

EDIT2 :我认为人们会混淆trailing zero leading zero

来自维基百科页面;

  

落后零

     

在数学中,尾随零是一个0的序列   十进制表示(或更一般地,在任何位置   代表)一个数字,之后没有其他数字跟随


  

前导零

     

前导零是指向数字字符串的任何0位数   在位置表示法。 例如,詹姆斯邦德着名的标识符,   007,有两个前导

答案 1 :(得分:2)

使用:

"MM/dd/yyyy hh:mm:ss fff"

答案 2 :(得分:0)

在我的机器上:

hh:mm:ss.fff  leading zeros
hh:mm:ss.FFF  NO leading zeros

示例代码:

    for (int i = 0; i < 2222; i++)
    {
        Console.WriteLine(DateTime.Now.ToString("MM/dd/yyyy hh:mm:ss fff"));
    }
    string input;
    input = Console.ReadLine();