• C# 同步工作站与SQL服务器的时间


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


  • 相关阅读:
    javascript简易下拉菜单效果
    精通javascript笔记(智能社)——简易tab选项卡及应用面向对象方法实现
    精通JS正则表达式(转)
    精通javascript笔记(智能社)——数字时钟
    ERROR: transport error 202: bind failed: Address already in use
    理解git对象
    InvocationHandler中invoke()方法的调用问题
    深入理解Java Proxy机制(转)
    IP、子网的详述 ——IP分类、网关地址,子网掩码、子网作用(转)
    getRequestDispatcher()与sendRedirect()的区别
  • 原文地址:https://www.cnblogs.com/zhaoshujie/p/9594775.html
Copyright © 2020-2023  润新知