2014-01-22 66 views
1

我需要閱讀用戶(客戶機)本地時間。但我不想從客戶機時間讀取它。用戶可以在個人電腦上調整時間。閱讀客戶端本地時間而不是從用戶機器

這裏是我想這樣做的。

  1. 閱讀客戶端的IP地址。
  2. 使用任何GEOIP API來獲取IP
  3. 使用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

+4

我期望#的地理編碼錯誤大於人的# e在自己的電腦上改變了時間。 – David

+0

IP地址不是有效的時區指示符。例如,在亞利桑那州的工作中,我似乎在美國的東海岸 - 兩三個小時的路程。我曾在美國工作過,我曾在英國待過。 –

+0

我編輯了你的標題。請參閱:「[應該在其標題中包含」標籤「](http://meta.stackexchange.com/questions/19190/)」,其中的共識是「不,他們不應該」。 –

回答

0

有從客戶機獲得時間沒有可靠的方法

  1. 客戶端時間可能不可靠,因爲客戶可以更改時間
  2. 有一些錯誤的事情用你的技術,如果有人在vpn後面,那麼你將不會成爲客戶的時區
+0

那麼我們都明白這個問題。這就是爲什麼我發佈了這個問題,以找出是否有更好的方法(更可靠的方法)獲得客戶端時區或直接客戶端時間。 – HaBo

相關問題