public class MainClass { public static void Main(string[] args) { DateTime dt = DateTime.Now; String[] format = { "d", "D", "f", "F", "g", "G", "m", "r", "s", "t", "T", "u", "U", "y", "dddd, MMMM dd yyyy", "ddd, MMM d \"'\"yy", "dddd, MMMM dd", "M/yy", "dd-MM-yy", }; String date; for (int i = 0; i < format.Length; i++) { date = dt.ToString(format[i], DateTimeFormatInfo.InvariantInfo); Console.WriteLine(String.Concat(format[i], " :" , date)); }
/** Output. * * d :08/17/2000 * D :Thursday, August 17, 2000 * f :Thursday, August 17, 2000 16:32 * F :Thursday, August 17, 2000 16:32:32 * g :08/17/2000 16:32 * G :08/17/2000 16:32:32 * m :August 17 * r :Thu, 17 Aug 2000 23:32:32 GMT * s :2000-08-17T16:32:32 * t :16:32 * T :16:32:32 * u :2000-08-17 23:32:32Z * U :Thursday, August 17, 2000 23:32:32 * y :August, 2000 * dddd, MMMM dd yyyy :Thursday, August 17 2000 * ddd, MMM d "'"yy :Thu, Aug 17 '00 * dddd, MMMM dd :Thursday, August 17 * M/yy :8/00 * dd-MM-yy :17-08-00 */ } } 这是MSDN中的方法。你可以参考参考,ToString()方法基本可以满足你的要求
只有用Win32API函数SetSystemTime来实现,具体代码 using System;
namespace SetupDate { public class TestSetupSysTime { [DllImport("kernel32.dll")] public static extern void SetSystemTime(System.DateTiem lpSystemTime);
public static void Main(string[] args) { DateTime tim = new DateTime(2004,3,26); // 2004年3月26日 SetSystemTime(tim); } } }
using System; using System.Runtime.InteropServices;
[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; }
public class Win32 { [DllImport("Kernel32.dll")] public static extern bool SetSystemTime( ref SystemTime sysTime ); [DllImport("Kernel32.dll")] public static extern void GetSystemTime(ref SystemTime sysTime); }
public class TestPInvoke { public static void Main() { SystemTime sysTime = new SystemTime();
发错了,刚才是设置时间的api,这个才是设置时区的 [StructLayout (LayoutKind.Sequential)] public struct SYSTEMTIME { public short Year; public short Month; public short DayOfWeek; public short Day; public short Hour; public short Minute; public short Second; public short Miliseconds; }
using System.Globalization;
public class MainClass {
public static void Main(string[] args) {
DateTime dt = DateTime.Now;
String[] format = {
"d", "D",
"f", "F",
"g", "G",
"m",
"r",
"s",
"t", "T",
"u", "U",
"y",
"dddd, MMMM dd yyyy",
"ddd, MMM d \"'\"yy",
"dddd, MMMM dd",
"M/yy",
"dd-MM-yy",
};
String date;
for (int i = 0; i < format.Length; i++) {
date = dt.ToString(format[i], DateTimeFormatInfo.InvariantInfo);
Console.WriteLine(String.Concat(format[i], " :" , date));
}
/** Output.
*
* d :08/17/2000
* D :Thursday, August 17, 2000
* f :Thursday, August 17, 2000 16:32
* F :Thursday, August 17, 2000 16:32:32
* g :08/17/2000 16:32
* G :08/17/2000 16:32:32
* m :August 17
* r :Thu, 17 Aug 2000 23:32:32 GMT
* s :2000-08-17T16:32:32
* t :16:32
* T :16:32:32
* u :2000-08-17 23:32:32Z
* U :Thursday, August 17, 2000 23:32:32
* y :August, 2000
* dddd, MMMM dd yyyy :Thursday, August 17 2000
* ddd, MMM d "'"yy :Thu, Aug 17 '00
* dddd, MMMM dd :Thursday, August 17
* M/yy :8/00
* dd-MM-yy :17-08-00
*/
}
}
这是MSDN中的方法。你可以参考参考,ToString()方法基本可以满足你的要求
using System;
namespace SetupDate
{
public class TestSetupSysTime
{
[DllImport("kernel32.dll")]
public static extern void SetSystemTime(System.DateTiem lpSystemTime);
public static void Main(string[] args)
{
DateTime tim = new DateTime(2004,3,26); // 2004年3月26日
SetSystemTime(tim);
}
}
}
using System.Runtime.InteropServices;
[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;
}
public class Win32
{
[DllImport("Kernel32.dll")]
public static extern bool SetSystemTime( ref SystemTime sysTime );
[DllImport("Kernel32.dll")]
public static extern void GetSystemTime(ref SystemTime sysTime);
}
public class TestPInvoke
{
public static void Main()
{
SystemTime sysTime = new SystemTime();
sysTime.wYear = 2003;
sysTime.wMonth=1;
sysTime.wDay=1;
sysTime.wHour=1;
sysTime.wMinute=1;
sysTime.wSecond=1;
sysTime.wMiliseconds=1;
Win32.SetSystemTime(ref sysTime);
}
}
---------
这个好使
public static extern void GetSystemTime(ref SystemTime sysTime);
一个api函数
GetSystemTime 取得当前系统时间,这个时间采用的是"协同世界时间"(即UTC,也叫做GMT)格式public static extern bool SetSystemTime( ref SystemTime sysTime );
同样是api函数,设置时间格式为ref参数systemtime类,systemtime参数的项不用我解释了把
[StructLayout (LayoutKind.Sequential)]
public struct SYSTEMTIME
{
public short Year;
public short Month;
public short DayOfWeek;
public short Day;
public short Hour;
public short Minute;
public short Second;
public short Miliseconds;
}
//api函数声明
[DllImport ("kernel32.dll", CharSet=CharSet.Ansi)]
public extern static bool SetSystemTime(ref SYSTEMTIME time);
private void button1_Click(object sender, System.EventArgs e)
{
//调用代码
SYSTEMTIME t = new SYSTEMTIME ();
t.Year = 2000;
t.Month = 1;
t.Day = 2;
t.Hour = 12-8; //这个函数使用的是0时区的时间,对于我们用+8时区的,时间要自己算一下.如要设12点,则为12-8
t.Minute = 5;
bool v = SetSystemTime(ref t);
Console.WriteLine(v.ToString());
}