1
我需要閱讀用戶(客戶機)本地時間。但我不想從客戶機時間讀取它。用戶可以在個人電腦上調整時間。閱讀客戶端本地時間而不是從用戶機器
這裏是我想這樣做的。
- 閱讀客戶端的IP地址。
- 使用任何GEOIP API來獲取IP
- 使用C#的TimeZoneInfo類和ConvertTImeFromUTC方法來獲取當前當地時間該區域
要讀取IP地址
的時區public static string GetUserIP(System.Web.HttpContext context)
{
string retIPAddress = string.Empty;
string sIPAddress = context.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];
if (string.IsNullOrEmpty(sIPAddress))
retIPAddress = context.Request.ServerVariables["REMOTE_ADDR"];
else
retIPAddress = sIPAddress.Split(',').FirstOrDefault();
return retIPAddress;
}
從IP地址API讀取時區,如IPInfoDB
private static DateTime CurrentLocalTime()
{
return TimeZoneInfo.ConvertTimeFromUtc(DateTime.UtcNow, TimeZoneInfo.FindSystemTimeZoneById("what ever the time zone name returned by API"));
}
這種方法聽起來並不十分可靠,因爲時區的ID可能無法從API的匹配。 有沒有更好的方法來實現這一點?
平臺:ASP.NET
我期望#的地理編碼錯誤大於人的# e在自己的電腦上改變了時間。 – David
IP地址不是有效的時區指示符。例如,在亞利桑那州的工作中,我似乎在美國的東海岸 - 兩三個小時的路程。我曾在美國工作過,我曾在英國待過。 –
我編輯了你的標題。請參閱:「[應該在其標題中包含」標籤「](http://meta.stackexchange.com/questions/19190/)」,其中的共識是「不,他們不應該」。 –