我在日志中编写程序的活动,时间戳附加到每一行,格式如下:
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?
答案 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();