C# 同步工作站与SQL服务器的光阴,设置本机时间

本文转发:http://www.csframework.com/archive/2/arc-2-20130101-1971.htm

 

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);
      
      //处理Hong Kong时间 
      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))
   Local提姆eSync.SyncTime(dt);//同步服务器的时日 
}

 

相关文章