下午班上一做网站的同学打电话,请我帮忙做一个小工具。源于他做了一个网站,手头也采集了大量的帖子(应该是电子文档吧),发帖子总不能是一个时候发的吧,于是就请可帮做一个小工具——在指定的时间范围内间隔指定的时间随机改变系统时间。
要改变系统时间,.NET里好像没有现成的方法,就只有通过Win32 API来实现了。于是我就查阅了API大全,得到的SetSystemTime函数:
在SetSystemTime的参数中,参数类型为SYSTEMTIME,查阅MSND后得到SYSTEMTIME的结构如下:
typedef struct _SYSTEMTIME {
WORD wYear;
WORD wMonth;
WORD wDayOfWeek;
WORD wDay;
WORD wHour;
WORD wMinute;
WORD wSecond;
WORD wMilliseconds;
} SYSTEMTIME;
其内容相信不用我说了吧。
所以在C#中SYSTEMTIME的结构和SetSystemTime函数定义如下:
2
3
已经有了设为系统时间的方法,接下来就需要一个方法来创建随机时间。如果你直接取年的随机值、月的随机值、日的随机值……这种方法是不可行的,因为你会发现取到的时间并不一定是在你限定的时间范围内。
因为Datetime的基本单位是秒,所有我们可以在秒上做文章:先用TimeSpan求出两个时间之间相差的秒数,在以秒为最大值随机取一个值,然后以就小的时间加上随机取得的数。
2
接下来是将DateTime转换为SystemTime
源码下载:
https://files.cnblogs.com/desmend/ChangeSysTime.rar