using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Runtime.InteropServices;
namespace Chinetek.ComPactFrameWork.Util
{
/// <summary>
/// 提供修改系统本地时间的 API
/// </summary>
public class LocalDateTime
{
/// <summary>
/// imports SetLocalTime function from kernel32.dll
/// </summary>
/// <param name="lpSystemTime"></param>
/// <returns></returns>
[DllImport("coredll.dll", SetLastError = true)]
public static extern int SetLocalTime(ref SystemTime lpSystemTime);
/// <summary>
/// struct for date/time apis
/// </summary>
public struct SystemTime
{
/// <summary>
/// Year
/// </summary>
public short wYear;
/// <summary>
/// Month
/// </summary>
public short wMonth;
/// <summary>
/// Dayofweek
/// </summary>
public short wDayOfWeek;
/// <summary>
/// Day
/// </summary>
public short wDay;
/// <summary>
/// Hour
/// </summary>
public short wHour;
/// <summary>
/// Minute
/// </summary>
public short wMinute;
/// <summary>
/// Second
/// </summary>
public short wSecond;
/// <summary>
/// Milliseconds
/// </summary>
public short wMilliseconds;
}
/// <summary>
/// 设置本地时间
/// </summary>
/// <param name="dateTime"></param>
public static void SetLocalTime(DateTime dateTime)
{
SystemTime systNew = new SystemTime();
// 设置属性
systNew.wDay = (short)dateTime.Day;
systNew.wMonth = (short)dateTime.Month;
systNew.wYear = (short)dateTime.Year;
systNew.wHour = (short)dateTime.Hour;
systNew.wMinute = (short)dateTime.Minute;
systNew.wSecond = (short)dateTime.Second;
systNew.wDayOfWeek = (short)dateTime.DayOfWeek;
systNew.wMilliseconds = (short)dateTime.Millisecond;
// 调用API,更新系统时间
SetLocalTime(ref systNew);
}
}
}