服务器之家:专注于VPS、云服务器配置技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - C# - 利用C#修改Windows操作系统时间

利用C#修改Windows操作系统时间

2022-10-12 13:36rainbow70626 C#

这篇文章主要介绍了利用C#修改Windows操作系统时间,帮助大家更好的利用c#操作系统,感兴趣的朋友可以了解下

  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函数库。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
{
  /// <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);
  }
}

然后再需要的地方通过调用如下方法中间的核心代码来实现修改Windows操作系统时间,例如,通过Button的Click事件实现修改Windows操作系统时间:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
private void button1_Click(object sender, System.EventArgs e)
{
  //取得当前系统时间
  DateTime t = DateTime.Now;
  //在当前时间上加上一周
  t = t.AddDays(7);
  //转换System.DateTime到SYSTEMTIME
  SYSTEMTIME st = new SYSTEMTIME();
  st.FromDateTime(t);
  //调用Win32 API设置系统时间
  Win32API.SetLocalTime(ref st);
  //显示当前时间
  MessageBox.Show(DateTime.Now.ToString());
}

以上就是利用C#修改Windows操作系统时间的详细内容,更多关于c# 修改系统时间的资料请关注服务器之家其它相关文章!

原文链接:https://www.cnblogs.com/rainbow70626/p/13871234.html

延伸 · 阅读

精彩推荐
  • C#C#遍历集合与移除元素的方法

    C#遍历集合与移除元素的方法

    这篇文章主要介绍了C#遍历集合与移除元素的方法,结合实例形式分析了C#使用for循环遍历集合以及add与Remove方法进行元素添加与移除的使用技巧,需要的朋友...

    jixiaomeng10832021-11-29
  • C#谈谈c#中的索引器

    谈谈c#中的索引器

    这篇文章主要介绍了c#中的索引器的相关资料,帮助大家更好的理解和学习c#,感兴趣的朋友可以了解下...

    Tynam Yang10832022-10-09
  • C#C#使用yield关键字构建迭代器详解

    C#使用yield关键字构建迭代器详解

    这篇文章主要为大家详细介绍了C#使用yield关键字构建迭代器的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    绛河7402022-01-24
  • C#C#实体对象序列化成Json并让字段的首字母小写的两种解决方法

    C#实体对象序列化成Json并让字段的首字母小写的两种解决方法

    这篇文章主要介绍了C#实体对象序列化成Json并让字段的首字母小写的两种方法,在这两种方法中小编比较推荐使用第二种方法,需要的朋友可以参考下...

    想好了再来改名字6792022-02-24
  • C#C#判断字符串是否是数字(实例)

    C#判断字符串是否是数字(实例)

    本文主要分享了C#实现判断字符串是否是数字的具体实例,具有一定的参考价值,需要的朋友一起来看下吧...

    欣宇11242021-12-16
  • C#WPF自定义选择年月控件详解

    WPF自定义选择年月控件详解

    这篇文章主要为大家详细介绍了WPF自定义选择年月控件的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    秋荷雨翔5882022-01-24
  • C#C# Console利用mspaint打开图像并保存的方法

    C# Console利用mspaint打开图像并保存的方法

    这篇文章主要介绍了C# Console利用mspaint打开图像并保存的方法,涉及C#调用画图板操作图片的相关技巧,需要的朋友可以参考下...

    礼拜一11242021-11-08
  • C#C#窗体传值代码方法

    C#窗体传值代码方法

    在本篇文章里小编给大家整理的是关于C#窗体传值代码内容,需要的朋友们可以跟着学习参考下。...

    .NET开发菜鸟3752022-08-27