日期:2014-05-18  浏览次数:21269 次

很奇怪的问题 定时器里每隔一秒记录 日期时间 过了24点后 竟然多出一个9
代码如下:

private void button4_Click(object sender, EventArgs e)
  {
  // 使用System.Timers.Timer类
  System.Timers.Timer t = new System.Timers.Timer(1000);//实例化Timer类,设置间隔时间为1000毫秒;
  t.Elapsed += new System.Timers.ElapsedEventHandler(theout);//到达时间的时候执行事件;
  t.AutoReset = true;//设置是执行一次(false)还是一直执行(true);
  t.Enabled = true;//是否执行System.Timers.Timer.Elapsed事件;
   
  }

  public void theout(object source, System.Timers.ElapsedEventArgs e)
  {
  string str = DateTime.Now.ToString();
   
  Encoding.UTF8.GetBytes(str, 0, str.Length, rbyte, 0);
  mywrite.Save(rbyte);
  }

  WriteFile mywrite = new WriteFile("d:\\test1.txt");
  byte[] rbyte = new byte[100];

这是文本文件里记录的日期时间 

2008-9-21 23:59:56  
2008-9-21 23:59:57  
2008-9-21 23:59:58  
2008-9-21 23:59:59  
2008-9-22 0:00:009  
2008-9-22 0:00:019  
2008-9-22 0:00:029





------解决方案--------------------
string str = DateTime.Now.ToString(); 格式化输出试试
------解决方案--------------------
你的系统是啥的? 区域设置是啥? 
你手动把时间调到23:59:50,再试试是否每次都这样?
string str = DateTime.Now.ToString("yyyy-M-d H:m:s"); 试试
------解决方案--------------------
还是进行格式化输出吧。。
最后这个9貌似23:59:59最后的那个9
------解决方案--------------------
string str = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
------解决方案--------------------
因为你的byte[]是全局变量
所以
2008-9-21 23:59:59小时是23 两位 记录完后
2008-9-22 0:00:009
的时间部分小时是0一位,所以少了一位,所有上次那个最后的9就还在