zoukankan      html  css  js  c++  java
  • 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);
          
          //处理北京时间 
          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);//同步服务器的时间 
    }
  • 相关阅读:
    求助:多个参数的存储过程
    经典回顾:哲学家进餐问题(The Dinning Philosophers Problem)
    杨辉三角
    开发公共课选修系统之二
    关于即时消息系统
    用户 'NT AUTHORITY/NETWORK SERVICE' 登录失败 的解决方法(转)
    细说反射API
    东莞哪家公司可以提供实习的机会?
    使用Gmail发送email时出现Must issue a STARTTLS command first错误!!
    Revolution
  • 原文地址:https://www.cnblogs.com/51net/p/2843667.html
Copyright © 2011-2022 走看看