C#更改系统时间

核心代码:

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"));
        }
    }
}
时间: 2024-10-26 23:39:17

C#更改系统时间的相关文章

组策略允许用户更改系统时间

新建组策略-计算机配置-策略-windows设置-安全设置-本地策略-用户权限指派-更改系统时间-添加所有域用户 之后在客户端上更新下组策略 cmd-gpupdate /force 测试成功

[CentOS7服务器] 更改系统时间

未知何故,服务器上的系统时间不对,比实际的UTC快了将近63分钟.在涉及本地文件与远程服务器文件的时间戳校验时,容易产生混淆. 这里把系统时间更正的过程记录如下. 参考资料:http://www.centoscn.com/CentOS/config/2015/0723/5901.html 在CentOS 7里面有一个命令timedatectl可以帮助我们修改服务器的时区. 1. 查看服务器里的时间设置  timedatectl ,它等同于  timedatectl status : $ time

JS更改系统时间再获取时间戳不正确

今天做验证的时候,测试时间方面的时候发现一个问题,我提出了最简单的代码,代码如下. $("#div").click(function(){ var date = new Date(); console.log(date.getHours()) }) 这串代码没有问题,但是在Windows连续更改时间后,在Chrome上,它获取到的可能是之前的时间, 我这时候想到可能是缓存,所以我在 WebStorm 上用 nodejs 运行,果然,nodejs 没有这个问题 这只是一个小问题.在这里提

2014.10.1 Cmd更改系统时间

Process p = new Process(); //Process类有一个StartInfo属性 //设定程序名 p.StartInfo.FileName = "cmd.exe"; ////设定程式执行参数   "/C"表示执行完命令后马上退出 p.StartInfo.Arguments = string.Format("/c date {0} time {1}",date,time); ////关闭Shell的使用 p.StartInfo

freebsd 系统时间

http://blog.csdn.net/wowoto/article/details/5557810 https://www.douban.com/note/150233427/ date #查看当前系统日期与時間 date 200605261145 #更改系統時間為2006年05月26日11时45分 如果不能更改系统时间.可以按如下操作执行: 原因: 可能你的安全级别高于0 .FreeBSD 在安全级别高于0是不许更改系统时间的 . 也可以重启到单用户模式来更改时间. 使用下面的命令检查你的

Win10没有权限修改系统时间如何解决?

电脑发展到今天,时间的显示已经非常智能化.在Win10系统下,用户想要修改电脑时间,可以通过右下角时间区域进行调整.但是,有用户发现修改不了系统时间,提示没有权限.这是怎么回事?那要如何解决这样的问题呢?现在小编就和大家说一下Win10没有权限修改系统时间的解决方法. 步骤如下: 第一步.按"Win+r"组合键,运行"执行"对话框,输入"gpedit.msc",回车确认.如下图所示: 第二步.依次展开"计算机配置-Windows设置-安

禁止修改系统时间

这里有种办法供你选择:1.打开注册表(regedit),在HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer     下新增一个键值:     键值名称:NoSaveSettings     键值数据类型:DWORD     键值数据:1--退出时禁止储存环境设置                         0--退出时允许储存环境设置2.首先,使用系统管理员的帐号登陆进入系统,打开“开始

linux系统时间设定

更改系统时间并同步硬件时钟 sudo date -s '2018-12-27 12:46' sudo hwclock --systohc hwclock说明:hwclock --help 原文地址:https://www.cnblogs.com/chbo/p/10184350.html

【linux】CentOS 查看系统时间,修改时区

===============CentOS 7.6================ 1.查看系统时间 date 查看当前系统时间以及时区结果是: Mon Jul 8 09:23:31 UTC 2019 2.更改系统时间时区 timedatectl set-timezone Asia/Shanghai 3.再次查看 date 结果是: Mon Jul 8 17:25:28 CST 2019 4.可以重启后查看,防止重启后失效 reboot ======================= 原文地址: