C# 同步工作站与SQL服务器的时间,设置本机时间
作者:C/S框架网  发布日期:2013/01/01 10:40:46
  C# 同步工作站与SQL服务器的时间,设置本机时间

C# Code:

/// <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);//设置本机时间
   }
}

//来源:C/S框架网(www.csframework.com) QQ:1980854898




C# Code:


/// <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);//同步服务器的时间
}


//来源:C/S框架网(www.csframework.com) QQ:1980854898


上一篇 下一篇