當我使用DateTime.Now
時,我從服務器的角度得到日期和時間。有沒有辦法在ASP.NET中獲取客戶端日期和時間?如何在ASP.NET中獲取客戶端日期和時間?
回答
我會做的是創建一個隱藏的輸入字段,然後將一個JavaScript例程連接到窗體的onsubmit事件。這個例程將在客戶端機器上用時間填充隱藏字段。
隱藏字段可以通過使用HTML控件「HtmlInputHidden」類與ASP.NET一起使用。你只要給你輸入控制一個runat =「服務器」屬性就像任何其他服務器端控制。
然後,服務器可以在表單回傳後這段時間內讀出。如果你需要在很多地方這樣做,你甚至可以把它包裝在一個服務器控件中。
另外,你可以用AJAX做到這一點,但實現將取決於你使用的庫。
而不是做所有這些,只需使用Javascript來設置一個cookie,存儲瀏覽器時區。然後後端可以隨時讀取該cookie。 – 2014-05-14 22:05:47
Cookie存在的問題是人們旅行。 – 2018-02-21 15:38:56
如果你維護一個用戶配置文件,你可以讓他們告訴你他們的時區,然後做必要的計算。
另一種方法是根據他/她的IP地址對用戶進行地理定位。或者,如果瀏覽器具有此功能(即將推出的Firefox),則會進行地理定位。一旦你有用戶的位置,你可以查找時區。
JavaScript解決方案可能是一個很好的和容易的。
IP不一定會給出正確的答案。我有一個客戶端使用單個站點進行所有網絡連接(從一個站點到另一個站點的直接管道),因此所有這些客戶端都來自CST IP,無論他們身在何處。 – 2008-11-08 16:26:15
Stephen:我們的業務是隱藏客戶IP,因此VPN-in位於布拉格,代理服務器位於柏林。例如,客戶是在莫斯科。 – abatishchev 2011-02-26 01:46:46
客戶端和服務器可能不完全同步,所以問題是如果你想在客戶端計算機上的時間,或者你想在服務器上的時間,但調整時區差異。 Javascript可以讓你在客戶端的時間(包括時區)。您還可以將服務器上的時間與客戶端的時區組合在一起。
儘管如此,您永遠無法獲得比請求的正確性更高的精度。
我喜歡使用瀏覽器/系統時間和時區或讓他們選擇他們的時區的想法。在過去的項目中,我使用的是這樣的:
<script language="javascript">
function checkClientTimeZone()
{
// Set the client time zone
var dt = new Date();
SetCookieCrumb("ClientDateTime", dt.toString());
var tz = -dt.getTimezoneOffset();
SetCookieCrumb("ClientTimeZone", tz.toString());
// Expire in one year
dt.setYear(dt.getYear() + 1);
SetCookieCrumb("expires", dt.toUTCString());
}
// Attach to the document onload event
checkClientTimeZone();
</script>
然後在服務器上:
/// <summary>
/// Returns the client (if available in cookie) or server timezone.
/// </summary>
public static int GetTimeZoneOffset(HttpRequest Request)
{
// Default to the server time zone
TimeZone tz = TimeZone.CurrentTimeZone;
TimeSpan ts = tz.GetUtcOffset(DateTime.Now);
int result = (int) ts.TotalMinutes;
// Then check for client time zone (minutes) in a cookie
HttpCookie cookie = Request.Cookies["ClientTimeZone"];
if (cookie != null)
{
int clientTimeZone;
if (Int32.TryParse(cookie.Value, out clientTimeZone))
result = clientTimeZone;
}
return result;
}
或者你也可以在把它作爲一個URL參數,並在Page_Load處理:
http://host/page.aspx?tz=-360
只記得使用分鐘,因爲並非所有的時區都是整小時。
我在ASP.Net使用這種方法用VB
Dim strLanguage As String = Request.UserLanguages(0)
Dim currentCulture As CultureInfo = CultureInfo.CreateSpecificCulture(strLanguage)
Dim dateformat As String = currentCulture.DateTimeFormat.ShortDatePattern
這將產生計算機的觀察數據的數據時間格式。
- 1. 如何在asp.net C#中獲取客戶端PC的日期時間?
- 2. 如何從asp.net中的TimeZone獲取客戶端本地日期?
- 3. 服務器日期時間和客戶端日期時間
- 4. JSP客戶端的日期和時間
- 5. 如何在客戶端時區顯示日期和時間
- 6. 轉換客戶端日期時間服務器的日期時間在ASP.NET MVC
- 7. 在Java中如何從客戶端獲取服務器日期時間
- 8. 客戶端上的ASP.NET AJAX和日期時間格式
- 9. 獲取客戶端的日期格式
- 10. 如何從sql實例獲取客戶端系統當前日期時間?
- 11. 如何在javascript和asp.net中獲取客戶端id值?
- 12. 如何在ASP.Net Web API上獲取日期和時間?
- 13. 在ASP.NET MVC中顯示客戶端時區中的日期時間
- 14. 如何獲取日期和時間(VBS)
- 15. 如何在php中獲取客戶端的時間(cake php/core)
- 16. 顯示日期/時間用戶的時區 - 在客戶端
- 17. 服務器和客戶端之間的日期時間差異
- 18. 在webview中獲取日期和時間
- 19. 在c中獲取日期和時間
- 20. 如何在asp.net中獲取服務器日期/時間
- 21. 如何在c#中的應用程序的客戶端獲取遠程服務器的日期和時間?
- 22. 在用戶的時區獲取用戶的日期和時間
- 23. 如何匹配asp.net中的servertime和客戶端時間?
- 24. 如何使用客戶端時區在客戶端中輸出數據庫時間戳作爲日期戳?
- 25. ASP.NET MVC自定義客戶端日期驗證,如何獲取輸入名稱?
- 26. CookComputing XML-RPC客戶端 - 如何獲得日期時間與時區
- 27. ASP.NET MVC-XVal客戶端驗證日期
- 28. 如何獲取客戶端系統使用的日期格式?
- 29. 如何將mysql datetime轉換爲客戶端日期時間?
- 30. 如何根據用戶客戶端(燈)顯示時間和日期
JavaScript可能很糟糕,因爲很多用戶的時間設置不準確。另外,它可能會被某人濫用。您必須驗證UTC的偏移量是否合理。 – hangy 2008-11-08 15:32:23