五维思考

学习要加,骄傲要减,机会要乘,懒惰要除。 http://www.5dthink.cn

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
/// <summary> 
/// 设置本机时间 
/// </summary> 
public class LocalTimeSync
{
   [DllImport("Kernel32.dll")]
   public static extern bool SetSystemTime(ref SystemTime sysTime);
   
   [DllImport("Kernel32.dll")]
   public static extern void GetSystemTime(ref SystemTime sysTime);
   
   [StructLayout(LayoutKind.Sequential)]
   public struct SystemTime
   {
      public ushort wYear;
      public ushort wMonth;
      public ushort wDayOfWeek;
      public ushort wDay;
      public ushort wHour;
      public ushort wMinute;
      public ushort wSecond;
      public ushort wMiliseconds;
   }
   /// <summary> 
   /// 设置本机时间 
   /// </summary> 
   public static void SyncTime(DateTime currentTime)
   {
      SystemTime sysTime = new SystemTime();
      sysTime.wYear = Convert.ToUInt16(currentTime.Year);
      sysTime.wMonth = Convert.ToUInt16(currentTime.Month);
      sysTime.wDay = Convert.ToUInt16(currentTime.Day);
      sysTime.wDayOfWeek = Convert.ToUInt16(currentTime.DayOfWeek);
      sysTime.wMinute = Convert.ToUInt16(currentTime.Minute);
      sysTime.wSecond = Convert.ToUInt16(currentTime.Second);
      sysTime.wMiliseconds = Convert.ToUInt16(currentTime.Millisecond);
      
      //处理北京时间 
      int nBeijingHour = currentTime.Hour - 8;
      if (nBeijingHour <= 0)
      {
         nBeijingHour = 24;
         sysTime.wDay = Convert.ToUInt16(currentTime.Day - 1);
         //sysTime.wDayOfWeek = Convert.ToUInt16(current.DayOfWeek - 1); 
      }
      else
      {
         sysTime.wDay = Convert.ToUInt16(currentTime.Day);
         sysTime.wDayOfWeek = Convert.ToUInt16(currentTime.DayOfWeek);
      }
      sysTime.wHour = Convert.ToUInt16(nBeijingHour);
      
      SetSystemTime(ref sysTime);//设置本机时间 
   }
}


/// <summary> 
/// 同步服务器时间 
/// </summary> 
public void SyncServerTime()
{
   string sql = "SELECT GETDATE()";
   object o = DataProvider.Instance.ExecuteScalar(Globals.DEF_ATTEND_SYSTEM_DB, sql);
   DateTime dt = ConvertEx.ToDateTimeEx(o);
   //LocalTimeSync.SyncTime(dt); 
   
   //比较时间一致性 
   if (ConvertEx.ToCharYYYYMMDDHHMM(DateTime.Now) != ConvertEx.ToCharYYYYMMDDHHMM(dt))
   LocalTimeSync.SyncTime(dt);//同步服务器的时间 
}


posted on 2015-03-07 09:59  五维思考  阅读(557)  评论(0编辑  收藏  举报

QQ群:1. 全栈码农【346906288】2. VBA/VSTO【2660245】