Khi tôi sử dụng DateTime.Now
Tôi nhận ngày và giờ từ quan điểm của máy chủ. Có cách nào để nhận được khách hàng ngày và giờ trong ASP.NET không?Làm thế nào để có được ngày và thời gian của khách hàng trong ASP.NET?
Trả lời
Điều tôi muốn làm là tạo trường nhập ẩn và sau đó gửi một thói quen Javascript đến sự kiện onsubmit cho biểu mẫu. Quy trình này sẽ điền vào trường ẩn với thời gian trên máy khách.
Trường ẩn có thể được sử dụng với ASP.NET bằng cách sử dụng lớp kiểm soát HTML "HtmlInputHidden". Bạn chỉ cần cung cấp cho bạn điều khiển đầu vào một thuộc tính runat = "server" giống như bất kỳ điều khiển phía máy chủ nào khác.
Máy chủ sau đó có thể đọc lần này khi biểu mẫu đăng lại. Bạn thậm chí có thể quấn này lên trong một điều khiển máy chủ nếu bạn cần phải làm điều này ở một số nơi.
Hoặc, bạn có thể làm điều này với AJAX nhưng việc triển khai sẽ phụ thuộc vào thư viện bạn sử dụng.
Thay vì làm tất cả, chỉ cần sử dụng Javascript để đặt cookie, lưu trữ múi giờ của trình duyệt. Sau đó, chương trình phụ trợ có thể đọc cookie đó bất cứ khi nào. –
Vấn đề với cookie là mọi người đi du lịch. –
nếu bạn đang duy trì hồ sơ người dùng, bạn có thể yêu cầu họ cho bạn biết múi giờ của họ và sau đó thực hiện các tính toán cần thiết.
Cách khác là định vị người dùng dựa trên địa chỉ IP của anh ấy/cô ấy. Hoặc định vị địa lý nếu trình duyệt có khả năng này (sắp có cho Firefox). Khi bạn có vị trí của người dùng, bạn có thể tra cứu múi giờ.
Giải pháp javascript có lẽ là giải pháp tốt và dễ dàng.
IP sẽ không nhất thiết phải trả lời đúng. Tôi có một khách hàng sử dụng một trang web duy nhất cho tất cả các kết nối mạng (đường ống trực tiếp từ một trang web khác) để tất cả chúng đến từ một IP CST bất kể họ đang ở đâu. –
Stephen: Chúng tôi làm kinh doanh để ẩn IP của khách hàng để VPN-in ở Prague và proxy-out là ở Berlin. Và khách hàng là, ví dụ, ở Moscow. – abatishchev
Máy khách và máy chủ có thể không được đồng bộ hóa hoàn toàn, do đó, câu hỏi là nếu bạn muốn thời gian trên máy khách hoặc bạn muốn thời gian trên máy chủ, nhưng được điều chỉnh cho chênh lệch múi giờ. Javascript có thể giúp bạn có được thời gian trên máy khách (bao gồm cả múi giờ). Bạn cũng có thể kết hợp thời gian trên máy chủ với múi giờ của ứng dụng khách.
Tuy nhiên, bạn không bao giờ có thể có được thời gian có độ chính xác cao hơn độ trễ của yêu cầu.
Tôi thích ý tưởng sử dụng thời gian/thời gian của trình duyệt/hệ thống hoặc cho phép họ chọn múi giờ của họ. Trong một dự án trước đây tôi đã sử dụng một cái gì đó như thế này:
<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>
Và sau đó trên máy chủ:
/// <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;
}
Hoặc bạn có thể vượt qua nó như một tham số URL và xử lý nó trong Page_Load:
http://host/page.aspx?tz=-360
Chỉ cần nhớ sử dụng phút, vì không phải tất cả các múi giờ đều là toàn bộ giờ.
dòng này không rõ ràng Int32.TryParse (cookie.Value, kết quả ra); bạn lưu trữ giá trị cookie trong biến kết quả nhưng trước khi u lưu tổng số phút vào biến kết quả. không phải rất rõ ràng chức năng thường xuyên phía máy chủ của bạn GetTimeZoneOffset() chức năng. nếu có thể plzz giải thích. – Thomas
@Thomas Tôi bắt đầu với múi giờ của Máy chủ và sau đó kiểm tra xem liệu cookie múi giờ của khách hàng có tồn tại hay không. Nếu cookie tồn tại, hãy thử chuyển đổi chuỗi thành số nguyên. – Ryan
tôi đã sử dụng phương pháp này trong ASP.Net với VB
Dim strLanguage As String = Request.UserLanguages(0)
Dim currentCulture As CultureInfo = CultureInfo.CreateSpecificCulture(strLanguage)
Dim dateformat As String = currentCulture.DateTimeFormat.ShortDatePattern
này sẽ mang lại các định dạng dữ liệu thời gian của máy tính nhìn vào dữ liệu.
Chào mừng bạn đến với StackOverflow! Vui lòng đọc lại câu hỏi. Người dùng muốn biết thời gian địa phương của khách hàng, không phải là định dạng thời gian. –
- 1. Làm thế nào để có được thời gian và ngày từ tem datetime trong php
- 2. SQL Server: Làm thế nào để có được thời gian ngày hiện tại trong YYYYMMDDHHMISSMSS
- 3. Làm thế nào để có được ngày trong tuần từ một dấu thời gian Unix (PHP)?
- 4. Chúng tôi có thể đặt cookie trong php theo thời gian của khách hàng không?
- 5. Nội địa hóa - làm thế nào để có được vị trí của khách hàng trong asp.net MVC?
- 6. làm thế nào để có được địa chỉ mac của khách hàng duyệt trang web bằng asp.net MVC C#
- 7. Làm thế nào để có được dấu thời gian Unix trong MySQL từ thời gian UTC?
- 8. Làm thế nào để có được thời gian thời gian trong C#?
- 9. Làm cách nào để có được thời gian địa phương của người dùng thay vì thời gian của máy chủ?
- 10. Làm thế nào để kết hợp ngày và thời gian vào một dấu thời gian trong db2?
- 11. làm thế nào để lưu trữ ngày và thời gian với JPA trong Oracle?
- 12. Oracle: Làm thế nào để lọc theo ngày và thời gian trong một mệnh đề where
- 13. Làm cách nào để có được thời gian trong ngày trong javascript/Node.js?
- 14. Làm thế nào để có được thời gian chèn đáng tin cậy trong Cassandra?
- 15. Làm thế nào để có được thời gian chạy của chương trình trong Haskell
- 16. Lấy ngày hiện tại và thời gian với [NSDate ngày] Thời gian ngày
- 17. Làm thế nào để tăng thời gian chờ của dịch vụ web trong asp.net?
- 18. Làm thế nào để so sánh chỉ là một phần ngày và không phải là thời gian của hai Ngày?
- 19. Làm thế nào để có được thời gian kỷ nguyên trong SQL Server?
- 20. Ngày không có thời gian trong đầu ra JSON của API Web ASP.NET
- 21. làm thế nào tôi có thể thiết lập thời gian và ngày thông báo
- 22. Làm thế nào để bạn đặt thời gian và chỉ thời gian trong lịch trong Java?
- 23. Làm cách nào để đặt thời gian chờ cho các kết nối http của khách hàng trong node.js
- 24. C++: làm thế nào để có được thời gian thực tế với thời gian và giờ địa phương?
- 25. ngày và thời gian của datetime Bắt (? Lỗi trong MySQL)
- 26. Làm thế nào để làm cho sự khác biệt thời gian máy chủ dịch vụ WCF khách hàng độc lập?
- 27. Làm thế nào để tôi nhận được IP của khách hàng của một yêu cầu Tornado?
- 28. Làm thế nào để chuyển đổi chuỗi để thời gian ngày trong Scala?
- 29. Làm thế nào để có được thời gian một người bạn đã được thực hiện?
- 30. Làm thế nào để tôi có được chi tiết của khách hàng trong ASP.NET tức là. trình duyệt, độ phân giải và hệ điều hành?
JavaScript có thể không tốt vì nhiều người dùng đã đặt thời gian của họ không chính xác. Ngoài ra, nó có thể bị lạm dụng bởi một người nào đó. Bạn phải xác nhận liệu bù đắp cho UTC là hợp lý hay không chắc chắn. – hangy