2011-05-07 62 views
0

我在做窗口服务,我在基于数据库的一些细节在目标路径中生成txt文件,但我有一个问题,该服务运行得太快!如何附加这个hhmmss问题

我得到相同的文件名在所需的秒变化的地方,以便我可以避免在那里重复。

代码:

using (transactionscope scope = new transactionscope) 
{ 
    string nowtime = datetime.now.today.tostring(HHMMss) // it was working fine 
} 

文件应该是通过生成特定的文件命名约定!例如:hhmmss >>>没有毫秒 任何一个可以给我独特的想法如何面对这部分?

+1

就在旁边,但如果您使用时间戳来避免重复,则可能需要重新考虑解决方案。如果您的服务运行时间超过24小时,或者夏令时开始,或者某人更改了系统上的时间,则最终会出现重复项。为什么不使用GUID来唯一标识文件? – Johnv2020 2011-05-07 07:15:58

回答

3

您可以添加毫秒文件名:

string nowtime = datetime.Now.Today.ToString("HHmmssfff"); 

Custom Date and Time Format Strings

你发布的代码的几个注意事项:

  1. MM是几个月,而不是几分钟。你应该使用小写毫米。
  2. ToString需要的参数是一个字符串。
  3. 您的代码无法编译,因为它没有正确的装箱。请使用可以在将来直接使用的代码

更新:

看到你使用这种格式,唯一的选择就是“慢下来”的服务。

添加:(→循环结束)

Thread.Wait(1000); 

在正确的地方可以做的伎俩。

或者,如果您仍然在同一秒内,则可以更改代码以附加到文件。

+0

不,我们不能。文件应该由特定的文件命名约定生成!例如:hhmmss >>> no millisecond – pubby 2011-05-07 04:41:50

+2

@pubby - 你为什么不在你的问题中发布?这不是我们能猜到的。请编辑您的问题并添加这个非常重要的细节。 – Oded 2011-05-07 04:43:45

+0

我怀疑... !!!我们可以在线上接力!我的意思是它会提供确切的输出要求! – pubby 2011-05-07 04:51:03

0

如果您在说您要创建多个具有相同名称的文件(同一秒中有多个文件),那么我会将时间缩短到毫秒。你可以这样做:

DateTime.Today.ToString("HHmmssfff"); 

fff表示小数点后三位(千分之一秒)。

+1

'MM'是针对montns的。 – Oded 2011-05-07 04:42:47

+0

没错。谢谢 - 修复它。 – 2011-05-07 04:43:50