C#设置系统时间和时区

dangbuzhu 2007-04-10 10:16:26
根据这个字符串 2007-04-09T18:20:54.3100000+08:00
设置系统时间 主要是设置时区。
小弟在线等。
...全文
1094 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
fxqyyzg 2007-04-10
  • 打赏
  • 举报
回复
http://www.pinvoke.net/default.aspx/kernel32.SetTimeZoneInformation

如果你英语还行的话就看看这个链接
fxqyyzg 2007-04-10
  • 打赏
  • 举报
回复
发错了,刚才是设置时间的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;
}


//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());
}
fxqyyzg 2007-04-10
  • 打赏
  • 举报
回复

public static extern void GetSystemTime(ref SystemTime sysTime);
一个api函数
GetSystemTime 取得当前系统时间,这个时间采用的是"协同世界时间"(即UTC,也叫做GMT)格式

public static extern bool SetSystemTime( ref SystemTime sysTime );
同样是api函数,设置时间格式为ref参数systemtime类,systemtime参数的项不用我解释了把

sz709 2007-04-10
  • 打赏
  • 举报
回复
关注..顶
dangbuzhu 2007-04-10
  • 打赏
  • 举报
回复
海冬清 你好 你能不能给你说的这种方法中加点代码 。
根据我给出的字符串设置系统的时间主要是怎么设置时区。
dangbuzhu 2007-04-10
  • 打赏
  • 举报
回复
主要是时区 怎么设置
fxqyyzg 2007-04-10
  • 打赏
  • 举报
回复
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();

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);
}
}
---------
这个好使
fxqyyzg 2007-04-10
  • 打赏
  • 举报
回复
只有用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);
}
}
}

noky 2007-04-10
  • 打赏
  • 举报
回复
using System;
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()方法基本可以满足你的要求

110,577

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧