用C#设置系统时间和本地时间

本文介绍了在C#中如何利用Win32 API设置系统时间和本地时间,特别是SetSystemTime()和SetLocalTime()的区别。SetSystemTime()设置的是UTC时间,可能因时区导致偏差,而SetLocalTime()直接设置本地时间。文中还讨论了如何处理这种时间偏差,并提供了通过字符串参数设置本地时间的示例代码。此外,文章提到了在Visual Studio .NET 2003中调试此类程序时可能遇到的问题。
摘要由CSDN通过智能技术生成

 

        前些日子在工作中遇到一个在原子交易中用C#设置系统时间的问题,虽是一个小问题,却因为C#本身没有这种函数而耽误了一些时间,C#要设置系统时间必须要调用Win32的API,而其中相关的函数就是SetSystemTime(), GetSystemTimer(), SetLocalTime(), GetLocalTime(), 这似乎是用VC写的函数,在VC++中是可以直接调用的。MSDN上面对这几个函数解释得不是很详细,网上可以找到不少这样的程序,但我个人感觉对这些函数的功能和注意点说得也不够透彻,包括那个所谓经过测试的。这里把自己所用到的一些功能和体会给出来,至少要把SetSystemTIme()和SetLocalTime()这两个函数的区别搞清楚。

对于这两个函数,其输入参数必须是一个下面这样的结构体,其成员变量类型必须是ushort,成员变量不能改变顺序。

    [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 wMiliseconds;
 }

调用Win32的API,根据需要选用:

 

  public   class  Win32
 
{
  [DllImport(
"Kernel32.dll")]
  
public static extern bool SetSystemTime(ref SystemTime sysTime );
  [DllImport(
"Kernel32.dll")]
  
public static extern bool SetLocalTime(ref SystemTime sysTime);
  [DllImport(
"Kernel32.dll")]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值