.NET经验心得探讨社区  
请在这里用键盘敲打出属于你的地位!

    using System.Drawing;
    using System.ComponentModel;
    using System.Runtime.InteropServices;

    [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;
    }

    public class Win32
    {
        [DllImport("Kernel32.dll")]
        public static extern bool SetSystemTime(ref SystemTime sysTime);
        [DllImport("Kernel32.dll")]
        public static extern void GetSystemTime(ref SystemTime sysTime);
    }

    #region 时间同步
    /// <summary>
    /// 设置与服务器同步时间
    /// </summary>
    public void SynchronousTime()
    {
        try
        {
            #region 更改计算机时间

            SystemTime sysTime = new SystemTime();

            DateTime ServerTime = Convert.ToDateTime("2005-01-18");

            sysTime.wYear = Convert.ToUInt16(ServerTime.Year);

            sysTime.wMonth = Convert.ToUInt16(ServerTime.Month);

            sysTime.wDay = Convert.ToUInt16(ServerTime.Day);


            //处置北京时间

            int nBeijingHour = ServerTime.Hour - 8;

            if (nBeijingHour <= 0)
            {
                nBeijingHour += 24;

                sysTime.wDay = Convert.ToUInt16(ServerTime.Day - 1);

                sysTime.wDayOfWeek = Convert.ToUInt16(ServerTime.DayOfWeek - 1);
            }
            else
            {
                sysTime.wDay = Convert.ToUInt16(ServerTime.Day);

                sysTime.wDayOfWeek = Convert.ToUInt16(ServerTime.DayOfWeek);
            }

            sysTime.wHour = Convert.ToUInt16(nBeijingHour);

            sysTime.wMinute = Convert.ToUInt16(ServerTime.Minute);

            sysTime.wSecond = Convert.ToUInt16(ServerTime.Second);

            sysTime.wMiliseconds = Convert.ToUInt16(ServerTime.Millisecond);

            Win32.SetSystemTime(ref sysTime);

            #endregion
        }
        catch
        {
            //产生错误则不引发异常。
        }
    }
    #endregion

posted on 2007-08-28 15:35  苦涩的咖啡  阅读(665)  评论(0编辑  收藏  举报