核心代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Sockets;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading.Tasks;
namespace TestServerTime
{
    public class ServerInfo
    {
        public static string GetHostName()
        {
            return Dns.GetHostName();
        }
        public static string GetLocalIP()
        {
            string ip = "";
            try
            {
                string HostName = Dns.GetHostName(); //得到主机名
                IPHostEntry IpEntry = Dns.GetHostEntry(HostName);
                for (int i = 0; i < IpEntry.AddressList.Length; i++)
                {
                    //从IP地址列表中筛选出IPv4类型的IP地址
                    //AddressFamily.InterNetwork表示此IP为IPv4,
                    //AddressFamily.InterNetworkV6表示此地址为IPv6类型
                    if (IpEntry.AddressList[i].AddressFamily == AddressFamily.InterNetwork)
                    {
                        ip = IpEntry.AddressList[i].ToString();
                    }
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
            return ip;
        }
        [DllImport("kernel32.dll", CharSet = CharSet.Auto, SetLastError = true)]
        internal static extern bool SetLocalTime(ref SYSTEMTIME lpSystemTime);
        [StructLayout(LayoutKind.Sequential)]
        internal struct SYSTEMTIME
        {
            public ushort wYear;
            public ushort wMonth;
            public ushort wDayOfWeek;    // ignored for the SetLocalTime function
            public ushort wDay;
            public ushort wHour;
            public ushort wMinute;
            public ushort wSecond;
            public ushort wMilliseconds;
        }
        public static bool SetLocalTimeByStr(string timestr)
        {
            bool flag = false;
            SYSTEMTIME sysTime = new SYSTEMTIME();
            string SysTime = timestr.Trim();   //此步骤多余,为方便程序而用直接用timestr即可
            sysTime.wYear = Convert.ToUInt16(SysTime.Substring(0, 4));
            sysTime.wMonth = Convert.ToUInt16(SysTime.Substring(4, 2));
            sysTime.wDay = Convert.ToUInt16(SysTime.Substring(6, 2));
            sysTime.wHour = Convert.ToUInt16(SysTime.Substring(8, 2));
            sysTime.wMinute = Convert.ToUInt16(SysTime.Substring(10, 2));
            sysTime.wSecond = Convert.ToUInt16(SysTime.Substring(12, 2));
            //注意:
            //结构体的wDayOfWeek属性一般不用赋值,函数会自动计算,写了如果不对应反而会出错
            //wMiliseconds属性默认值为一,可以赋值
            try
            {
                flag = SetLocalTime(ref sysTime);
            }
            //由于不是C#本身的函数,很多异常无法捕获
            //函数执行成功则返回true,函数执行失败返回false
            //经常不返回异常,不提示错误,但是函数返回false,给查找错误带来了一定的困难
            catch (Exception ex1)
            {
                Console.WriteLine("SetLocalTime函数执行异常" + ex1.Message);
            }
            return flag;
        }
    }
}

调用代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace TestServerTime
{
    class Program
    {
        static void Main(string[] args)
        {
            string destTime = "2015-11-12 15:09:24";
            SetServerTime(destTime);
           System.Console.WriteLine( DateTime.Now.ToLocalTime());
           System.Console.ReadLine();    
               
        }
        public static void SetServerTime(string destTime)
        {
            ServerInfo.SetLocalTimeByStr(DateTime.Parse(destTime).ToString("yyyyMMddHHmmss"));
        }
    }
}