最近在工作中遇到需要修改系统时区的问题,系统是嵌入式WinCE系统,虽说WinCE系统用户可以直接通过操作系统改系统时区,但我们嵌入式产品的设计是开机直接打开软件而禁止用户访问WinCE桌面,所以开发人员要在应用软件上实现设置时区功能。我们的应用软件是C#开发的,但我没找到C#查看全部时区和设置时区的接口,只有一个获取当前时区的接口。但我在网上找到了用命令行设置时区的方法,而C#可以直接调用命令行。
打开windows命令行,tzutil /g查看当前时区,tzutil /g列出所有可用时区,tzutil /s 设置时区。用C#调用命令行调用tzutil /g后会获得一个命令行输出的字符串,自己可以写一个类存储得到的可用时区,然后展示在界面上,下面附上C#调用命令行流程。
//要执行的命令
string strInput = "";
Process p = new Process();
//设置要启动的应用程序
p.StartInfo.FileName = "cmd.exe";
//是否使用操作系统shell启动
p.StartInfo.UseShellExecute = false;
// 接受来自调用程序的输入信息
p.StartInfo.RedirectStandardInput = true;
//输出信息
p.StartInfo.RedirectStandardOutput = true;
// 输出错误
p.StartInfo.RedirectStandardError = true;
//不显示程序窗口
p.StartInfo.CreateNoWindow = true;
//启动程序
p.Start();
//向cmd窗口发送输入信息
p.StandardInput.WriteLine(strInput + "&exit");
p.StandardInput.AutoFlush = true;
//获取输出信息
string strOuput = p.StandardOutput.ReadToEnd();
//等待程序执行完退出进程
p.WaitForExit();
p.Close();
Console.WriteLine(strOuput);
最近在工作中遇到需要修改系统时区的问题,系统是嵌入式WinCE系统,虽说WinCE系统用户可以直接通过操作系统改系统时区,但我们嵌入式产品的设计是开机直接打开软件而禁止用户访问WinCE桌面,所以开发人员要在应用软件上实现设置时区功能。我们的应用软件是C#开发的,但我没找到C#查看全部时区和设置时区的接口,只有一个获取当前时区的接口。但我在网上找到了用命令行设置时区的方法,而C#可以直接调用命令行。 打开windows命令行,tzutil /g查看当前时区,tzutil /g列出...
由于工作需要我们有时常常需要转化当地时间为其它
时区
的时间,或是把某一个
时区
的时间,转成另一个
时区
。
最近由于用了一些
C#
的方法,下面小结一下,省得过后自已又忘了。
1。 用如下的方法,可以得到所有的
时区
信息。
TimeZoneInfo.GetSystemTimeZones()
2。得到
时区
ID
TimeZoneInfo.GetSystemTimeZones()[75].ID
如果
系统
不考虑全球化的话,那么我们不用考虑
时区
的问题,因为我们可以认为中国境内的计算机全部用的是北京时间。
1.
时区
的来源和划分
地球自转一圈是360度,共24小时,所以1小时15度,即:15度就是1个
时区
。
国际定义了本初子午线(0度经线)的位置在英国伦敦格林尼治天文台,自然世界时(UTC)也是指的格林尼治天文台(GMT)那里的时间。
认为北京处在东经120度线上,也就是东八区上,所以北京相比UTC时间有8个小时的时差。
由于地球自西向东转,所以北京比格林尼治最先接触阳光,自然就认为北京的
我们公司的产品主要的客户在欧美地区,所以经常涉及到根据
时区
切换时间.所以花点时间研究这块问题。
前提:数据库时间字段(datetime),入库时最好选择UTC时间。方便后期根据不同地区的客户进行时间的转换。
话不多说,直接上代码。
1.首先,sql server提供了GETUTCDATE 这个时间函数,可以获取当前utc时间。
2. .NET 中提供了TimeZoneInfo,提供了一些方法用于
时区
的转换
3. 第三方的NetGet包:TimeZoneConverter
Codes:
using Syst
这里是
设置
成 北京
时区
,如果需要
设置
成其他
时区
,需要读取注册表“"Software\\Microsoft\\Windows NT\\CurrentVersion\\Time Zones\\" + timeZoneKeyName”下的信息。
对于xp、windows server 2003调用的是SetTimeZoneInformation win32 api
对于其他高版本需要调用SetDynamicTimeZoneInformation。
该命令将显示
系统
的日期、时间和
时区
信息。需要注意的是,该命令需要root权限才能执行。
另外,您还可以编辑文件`/etc/timezone`来查看
系统
时区
设置
。该文件中包含了
系统
当前的
时区
设置
。
2. Windows
系统
在Windows
系统
上,可以使用以下步骤来查看
系统
时区
:
(1)打开控制面板。
(2)选择“日期和时间”。
(3)选择“更改
时区
设置
”。
(4)在弹出的对话框中,可以看到当前
系统
的
时区
设置
。
需要注意的是,Windows
系统
可能会根据地理位置和夏令时等因素自动调整
时区
设置
。如果您需要保持
时区
设置
不变,可以将其
设置
为具体的
时区
。