【发布时间】:2019-07-21 23:52:14
【问题描述】:
我们经常遇到的一个问题是如何更改服务器时间,使其与客户或用户的时区相匹配。不幸的是,答案是——你不能。 Web 服务器只能在一个时区运行,因此其他 39 个时区的时间将“关闭”。
解决此问题的方法是将服务器时间转换为本地时间。 .NET 使用内置的 TimeZoneInfo 类使这一过程变得简单,该类可用于将一个时区转换为另一个时区。
那么我的服务器时间将与我的本地时间相差 12.30 小时,即从我的本地时间减去 12 小时 30 分钟以获得我的服务器时间。我需要从服务器时间获取我的本地时间。如何实现?
我尝试上课:
protected DateTime GetCurrentTime()
{
DateTime serverTime = DateTime.Now;
DateTime _localTime = TimeZoneInfo.ConvertTimeBySystemTimeZoneId(serverTime, TimeZoneInfo.Local.Id, "Arab Standard Time");
return _localTime;
}
这是在服务器上获取 TimeZoneId 的方法:
protected void Page_Load(object sender, EventArgs e)
{
foreach (TimeZoneInfo zoneID in TimeZoneInfo.GetSystemTimeZones())
{
Response.Write(zoneID.Id + "<br/>");
}
}
但我不知道我做错了什么或者为什么这样做有什么好处。我所拥有的只是服务器上的一个数据库并与 c# windows 应用程序连接,我尝试使用此代码获取我今天的报告> DATEADD(d, - 1, GETDATE()),但它在上午 11:30 之后工作
【问题讨论】:
标签: c# sql-server datetime timezone hosting