c#修改系统时间的方法
来源:互联网 发布:JS中的属性是什么意思 编辑:程序博客网 时间:2024/06/05 17:35
C#没有提供直接的方法对系统时间进行设定,一般我们只能通过DateTime.Now获取系统时间,但是并不能对这个时间进行修改。这里对了解的主要的两种方式做了个整理,希望对大家有帮助。
方法一,用API函数的方式来修改时间。
首先定义API函数
- [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 wMilliseconds;
- public void FromDateTime(DateTime dateTime)
- {
- wYear = (ushort)dateTime.Year;
- wMonth = (ushort)dateTime.Month;
- wDayOfWeek = (ushort)dateTime.DayOfWeek;
- wDay = (ushort)dateTime.Day;
- wHour = (ushort)dateTime.Hour;
- wMinute = (ushort)dateTime.Minute;
- wSecond = (ushort)dateTime.Second;
- wMilliseconds = (ushort)dateTime.Millisecond;
- }
- public DateTime ToDateTime()
- {
- return new DateTime(wYear, wMonth, wDay, wHour, wMinute, wSecond);
- }
- }
- //设定,获取系统时间,SetSystemTime()默认设置的为UTC时间,比北京时间少了8个小时。
- [DllImport("Kernel32.dll")]
- public static extern bool SetSystemTime(ref SYSTEMTIME time);
- [DllImport("Kernel32.dll")]
- public static extern bool SetLocalTime(ref SYSTEMTIME time);
- [DllImport("Kernel32.dll")]
- public static extern void GetSystemTime(ref SYSTEMTIME time);
- [DllImport("Kernel32.dll")]
- public static extern void GetLocalTime(ref SYSTEMTIME time);
调用API函数,这里主要要注意SetSystemTime和SetLocalTime,以及GetSystemTime和GetLocalTime的区别,尽量从测试结果中去分析比较。一般情况下我们就用SetLocalTime和GetLocalTime。
- {
- SYSTEMTIME st = new SYSTEMTIME();
- Win32.GetLocalTime(ref st);
- System.Diagnostics.Debug.WriteLine("GetLocalTime()");
- System.Diagnostics.Debug.WriteLine(st.ToDateTime().ToString("yyyy/MM/dd HH:mm:ss"));
- Win32.GetSystemTime(ref st);
- System.Diagnostics.Debug.WriteLine("GetSystemTime()");
- System.Diagnostics.Debug.WriteLine(st.ToDateTime().ToString("yyyy/MM/dd HH:mm:ss"));
- DateTime dt = Convert.ToDateTime("2011/12/12 12:15:20");
- System.Diagnostics.Debug.WriteLine("test time:2011/12/12 12:15:20");
- st.FromDateTime(dt);
- Win32.SetLocalTime(ref st);
- System.Diagnostics.Debug.WriteLine("SetLocalTime()");
- System.Diagnostics.Debug.WriteLine(DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss"));
- Win32.SetSystemTime(ref st);
- System.Diagnostics.Debug.WriteLine("SetSystemTime()");
- System.Diagnostics.Debug.WriteLine(DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss"));
测试结果:
GetLocalTime()
2011/12/12 20:16:00
GetSystemTime()
2011/12/12 12:16:00 //获取的时候比北京时间少8小时
test time:2011/12/12 12:15:20
SetLocalTime()
2011/12/12 12:15:20
SetSystemTime() //设定的时候比北京时间多8小时
2011/12/12 20:15:20
方法二,cmd命令的方式
这种方式可以用Process类调用cmd,以执行Window脚本的方式来改变系统时间,这种方式对于对批处理命令比较熟的人相当实用。代码如下:
- ProcessStartInfo PstartInfoCmd = new ProcessStartInfo();
- PstartInfoCmd.FileName = "cmd.exe";
- PstartInfoCmd.Arguments = "/C date " + createDateTime.ToShortDateString() ;
- PstartInfoCmd.WindowStyle = ProcessWindowStyle.Hidden;
- Process proStep1 = new Process();
- proStep1.StartInfo = PstartInfoCmd;
- proStep1.Start();
主要用了一句“ date 日期”脚本命令,注意cmd的/C开关,代表的是执行完就关闭cmd窗口,否则如果调用了Process 的WaitForExit()等方法可能会阻塞。
0 0
- c#修改系统时间的方法
- c#修改系统时间的方法
- c#修改系统时间的方法
- C#修改系统时间
- C#修改系统时间
- C# 修改系统时间
- Linux修改系统时间的简洁方法
- C# 修改系统本地时间
- C#修改Windows系统时间
- c#获取系统时间的方法
- c#获取系统时间的方法
- 修改系统的时间
- C#系统时间表示方法
- 通过注册表修改系统安装时间的方法
- CentOS 系统时间和时区查看以及修改的方法
- 修改linux系统时间的方法(date命令)
- CentOS 系统时间和时区查看以及修改的方法
- C#修改本地系统时间转载
- 联通版“小米3”被指偷换摄像头
- Spring MVC 教程,快速入门,深入分析
- 每天学点English Email(贺词1)
- .Net循环链表解决魔术师的秘密
- iOS中copy的用法
- c#修改系统时间的方法
- Java数组泛型的小疑问
- Word2010封面、目录和正文显示不同页码问题
- BS工作原理—BS总结
- 保存数据返回后可以继续编辑
- js 模块defin化讲解
- Android用户界面对话框之警告对话框(ALertDialog)
- Linux下的串口系列---struct termios结构体
- LDAP学习——(2)OpenLdap安装