C#的System.DateTime类提供了对日期时间的封装,用它进行时间的转换和处理很方便,但是我没有在其中找到任何可以用来修改系统时间的成员。用过VC、VB等的朋友可能知道,我们可以调用Win32 API SetLocalTime来改变系统时间,看来C#中也只能如此了。SetLocalTime需要一个SYSTEMTIME结构指针作为参数,这倒不难,我们可以“比葫芦画瓢”很快在C#中定义这个结构,但问题是,我同时还想“享受”.NET Framework的System.DateTime在时间转换和处理方面的便利,怎么办?只有自己动手了,为我们的C#中的SYSTEMTIME编写成员函数,实现和System.DateTime之间的互转。请看下面的代码:
首先我为了以后调用方便,新建了一个C#文件,在里面把SetLocalTime API放到一个名称为Win32API的类中,并把这个类放到我自己定义的namespace中,避免名称冲突。以后我还可以不断向这个类和名称空间添加常用的API,以便构造我自己的C# Win32 API函数库
//Forproc_Win32.cs
//对常用Win32 API函数及结构的声明
using System;
using System.Runtime.InteropServices;namespace Farproc.Win32
{/// <summary>/// /// </summary>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;/// <summary>/// 从System.DateTime转换。/// </summary>/// <param name="time">System.DateTime类型的时间。</param>public void FromDateTime(DateTime time){wYear = (ushort)time.Year;wMonth = (ushort)time.Month;wDayOfWeek = (ushort)time.DayOfWeek;wDay = (ushort)time.Day;wHour = (ushort)time.Hour;wMinute = (ushort)time.Minute;wSecond = (ushort)time.Second;wMilliseconds = (ushort)time.Millisecond;}
        /// <summary>/// 转换为System.DateTime类型。/// </summary>/// <returns></returns>public DateTime ToDateTime(){return new DateTime(wYear, wMonth, wDay, wHour, wMinute, wSecond, wMilliseconds);}/// <summary>/// 静态方法。转换为System.DateTime类型。/// </summary>/// <param name="time">SYSTEMTIME类型的时间。</param>/// <returns></returns>public static DateTime ToDateTime(SYSTEMTIME time){return time.ToDateTime();}}public class Win32API{[DllImport("Kernel32.dll")]public static extern bool SetLocalTime( ref SYSTEMTIME Time );[DllImport("Kernel32.dll")]public static extern void GetLocalTime(ref SYSTEMTIME Time);}
}
private void button1_Click(object sender, System.EventArgs e)
{//取得当前系统时间DateTime t = DateTime.Now;//在当前时间上加上一周t = t.AddDays(7);//转换System.DateTime到SYSTEMTIMESYSTEMTIME st = new SYSTEMTIME();st.FromDateTime(t);//调用Win32 API设置系统时间Win32API.SetLocalTime(ref st);//显示当前时间
    MessageBox.Show(DateTime.Now.ToString());
}

转载于:https://www.cnblogs.com/zty1294625258/p/6084672.html

C#技术点--修改系统时间相关推荐

  1. 加了域的计算机无法更改时间,加入域用户(DOMAIN USER)后如何修改系统时间

    如何给DOMAIN USER 用户修改客户机本地时间的权限? 回答: 您好,您可以使用组策略来定义. 首先你打开组策略编辑器(gpedit.msc)选择计算机配置–Windows设置–本地策略–用户权 ...

  2. linux下如何修改系统时间

    我们一般使用"date -s"命令来修改系统时间.比如将系统时间设定成2018年2月23日的命令如下. #date -s 02/23/2018 将系统时间设定成下午11点12分0秒 ...

  3. VB 禁止修改系统时间

    VB 禁止修改系统时间 添加到网络收藏宣传得积分可免费下载本站所有资源             VB 禁止修改系统时间   当任何程序或用户修改系统时间的时候,系统会将 WM_TIMECHANGE   ...

  4. linux 修改时间的命令,Linux 常用命令(查看版本、修改系统时间)

    1.查看内核版本:cat /proc/version [root@gjxb default]# cat /proc/version Linux version 2.6.9-78.8AXS2smp (p ...

  5. CentOS7手动修改系统时间

    CentOS7 永久修改系统时间 安装在虚拟机上的CentOS7的时间分为系统时间和硬件时间.二者都修改,重启系统(init 6 )才会永久生效. 修改步骤如下 查看当前系统时间 date     修 ...

  6. 转:Android中如何修改系统时间(应用程序获得系统权限)

    在 android 的API中有提供 SystemClock.setCurrentTimeMillis()函数来修改系统时间,可惜无论你怎么调用这个函数都是没用的,无论模拟器还是真机,在logcat中 ...

  7. 计算机系统时间无法更改,电脑时间不能修改|系统时间改不了 四个处理办法

    电脑时间不能修改|系统时间改不了 四个处理办法? 电脑时间不但可以让网友准确的查看时间,还对软件的运行.工作等方面至关重要,有时大家看电脑时间不准确想要修改,确发现改不了系统时间.碰到该故障的朋友不要 ...

  8. windows下命令行修改系统时间;修改系统时间的软件

    找了很久,都没有找到,还找了关键词 dos下修改系统时间 因为看到linux下修改系统时间是用hwclock 命令写入主板芯片. 而我由于某些原因想自动化修改系统时间,所以找windows下修改系统时 ...

  9. 经纬度距离,修改系统时间,读取ini文件

    1. 大家都知道地球是椭圆形的,同时使用一个经度和纬度可以定义唯一的位置.下面是现实从两个经纬度计算它们之间的距离 using System; using System.Collections.Gen ...

  10. Linux下修改系统时间并写入BIOS

    我们一般使用"date -s"命令来修改系统时间.比如将系统时间设定成2005年7月26日的命令如下. #date -s 07/26/2005 将系统时间设定成下午11点12分0秒 ...

最新文章

  1. 今天,苹果遭遇大宕机
  2. python的re2和re区别_浅谈Python中re.match()和re.search()的使用及区别
  3. SM2 国密算法被 Linux 内核社区接受
  4. ios请求头解决参数中文乱码_花了一天时间就解决了一个的请求头传参参数格式bug...
  5. 怎么查看过程xact_abort 是否开启_空调噪音大怎么办?
  6. (70)信号发生器DDS正弦波设计(二)(第14天)
  7. wamp xampp mysql端口冲突,xampp安装后apache 80端口被占用的解决方法
  8. CALayer的属性和使用
  9. BZOJ 2683: 简单题(CDQ 分治)
  10. IEEE 你吃透了吗?
  11. nvidia显示设置不可用_白送大福利?实战FreeSync显示器开启NVIDIA G-Sync Compatible
  12. 如何在oracle官网下载jdk11,在linux上使用wget从oracle官网下载jdk11
  13. 迅为恩智浦iTOP-IMX6开发平台
  14. 九歌计算机在线作诗硬件原理,矣晓沅,孙茂松:计算机的诗意 | 机器写诗的背后...
  15. ant design vue 中a-tree搜索查询
  16. MongoDB集群节点RECOVERING故障恢复
  17. Gartner:VPT技术原理 ——如何确定网络攻击面上的风险优先级
  18. bm26 bm27 1
  19. 2019组队赛第二场(ACM International Collegiate Programming Contest, Arabella Collegiate 解题报告 Apare_xzc
  20. linux卸载字体库,在Ubuntu中删除不必要的字体并安装MS核心字体 | MOS86

热门文章

  1. 「Mac新手必备」解决 Mac 无法启动、开机的问题
  2. DirEqual for Mac(文件夹快速比较工具)
  3. DBeaverEE for Mac(数据库管理工具)
  4. Apple设备的列表中的手机却不能更新iOS 14怎么办
  5. MacOS的14个Spotlight搜索技巧
  6. hibernate查询list结果集结果都是一样
  7. 教你下载BarTender 2016
  8. centos系统安全设置
  9. [javaSE] 反射-Class类的基本操作
  10. 波形捕捉:(3)捕捉设备性能