Có cách nào để bù đắp múi giờ của bạn ở phía máy chủ hay không, bằng cách đọc nội dung nào đó trong yêu cầu trên http, thay vì gửi mọi thứ cho khách hàng và cho phép nó xử lý nó?Bạn có thể xác định múi giờ từ các biến yêu cầu không?
Trả lời
này phức tạp hơn nhưng tôi đã phải sử dụng kịch bản này trước đây vì cài đặt máy và hồ sơ người dùng đôi khi không khớp với tùy chọn của khách truy cập của bạn. Ví dụ: một khách truy cập Vương quốc Anh truy cập trang web của bạn tạm thời từ một máy chủ của Úc.
Sử dụng dịch vụ định vị địa lý (ví dụ: MaxMind.com) theo đề xuất của @balabaster, để có được vùng phù hợp với IP của họ (Global.Session_Start là tốt nhất). Đây là một kết hợp tốt cho các ISP địa phương, nhưng không tốt cho AOL. Lưu trữ bù đắp từ điều này trong một cookie phiên.
Hoặc sử dụng JavaScript để nhận chênh lệch múi giờ như một phần của việc gửi/chuyển biểu mẫu khi người dùng nhập trang web. Đây là bù đắp hiện tại của trình duyệt, nhưng không nhất thiết là vùng ưa thích của khách truy cập. Sử dụng giá trị này làm mặc định; lưu trữ trong một cookie phiên khác.
<script type="text/javascript" language="JavaScript"> var offset = new Date(); document.write('<input type="hidden" id="clientTzOffset" name="clientTzOffset" value="' + offset.getTimezoneOffset() + '"/>'); </script>
Cho phép người truy cập để cập nhật các khu vực thông qua một cookie (cho người dùng ẩn danh) và một lĩnh vực trong hồ sơ tài khoản của họ (nếu chứng thực).
Giá trị dai dẳng # 3 từ ghi đè giá trị phiên. Bạn cũng có thể lưu trữ cùng một cookie cố định cho người dùng được xác thực để hiển thị thời gian trước khi họ đăng nhập.
Trong bất kỳ sự kiện nào trước khi tải trang ... Request.ServerVariables. Nếu bạn muốn múi giờ thực của họ thì bạn kiểm tra địa chỉ IP của họ và sử dụng công cụ chuyển đổi địa chỉ IP sang Geo-Location.
Tôi không chắc chắn nếu có một cách khác để bạn có thể làm điều đó, vì vậy nếu bạn đòi hỏi múi giờ máy tính của họ được cấu hình cho, nó sẽ phải chờ đợi tải trang cho một javascript ...
Kiểm tra detect_timezone.js - làm một công việc khá tốt xác định múi giờ của người dùng
Tôi đang tìm kiếm giải pháp phía máy chủ, để tôi có thể thực hiện những điều trong mã bộ nhớ đệm dựa trên múi giờ. Đây là một giải pháp tương tự cho những gì tôi đã sử dụng cuối cùng, và làm cho mã kết thúc trở lại không quan tâm nhiều, nhưng nó sẽ là tốt đẹp để có được offsets như là một phần của yêu cầu khách hàng. – DevelopingChris
than ôi, bạn không thể làm điều đó một cách đáng tin cậy. – Bozho
không đáng tin cậy. Có thể người dùng đã đặt thời gian không chính xác trong hệ thống của mình – shashwat
Chúng tôi có thể nhận được các múi giờ sử dụng mã dưới đây vào phía máy chủ thay vì gửi giá trị từ khách hàng.
private TimeZoneInfo GetRequestTimeZone()
{
TimeZoneInfo timeZoneInfo = null;
DateTimeOffset localDateOffset;
try
{
localDateOffset = new DateTimeOffset(Request.RequestContext.HttpContext.Timestamp, Request.RequestContext.HttpContext.Timestamp - Request.RequestContext.HttpContext.Timestamp.ToUniversalTime());
timeZoneInfo = (from x in TimeZoneInfo.GetSystemTimeZones()
where x.BaseUtcOffset == localDateOffset.Offset
select x).FirstOrDefault();
}
catch (Exception)
{
}
return timeZoneInfo;
}
Thanks ...
Bạn đã thử điều này trên một máy chủ được đặt thành UTC và một khách hàng được đặt thành múi giờ thực tế của bạn. – DevelopingChris
Bạn hấp dẫn tôi đủ để lãng phí một vài phút thời gian của tôi thử nghiệm này, nhưng xin lỗi. Đi câu cá. Khái niệm thú vị. Nếu trình duyệt sẽ chỉ gửi thời gian địa phương của họ với tiêu đề yêu cầu theo mặc định. – johnw182
Điều này dường như chỉ đơn thuần là một cách vòng xoay để xác định múi giờ của máy chủ, có thể được thực hiện đơn giản hơn nhiều. –
Có cách nào để làm offsets múi giờ của bạn ở phía máy chủ, bởi đọc một cái gì đó trong yêu cầu qua http, thay vì gửi tất cả mọi thứ cho khách hàng và để nó đối phó với nó?
Đây là giải pháp tôi đã đưa ra, khi tôi đã có cùng một vấn đề với các dịch vụ web WCF:
How to get a WCF Web Service to return DateTimes in user's local timezone
Về cơ bản, tôi nhận JavaScript/code góc của tôi để xác định múi giờ của người dùng, sau đó chuyển giá trị này cho một trong các dịch vụ web WCF của tôi.
Lưu ý cách tôi có dịch vụ web được gọi là getListOfRecords
có một thông số, giá trị bù theo múi giờ.
$scope.loadSomeDatabaseRecords = function() {
var d = new Date()
var timezoneOffset = d.getTimezoneOffset();
return $http({
url: 'http://localhost:15021/Service1.svc/getListOfRecords/' + timezoneOffset,
method: 'GET',
async: true,
cache: false,
headers: { 'Accept': 'application/json', 'Pragma': 'no-cache' }
}).success(function (data) {
$scope.listScheduleLog = data.Results;
});
}
Từ đó, mã của tôi # C đọc trong hồ sơ cơ sở dữ liệu, áp dụng múi giờ mà bù đắp cho DateTime
giá trị UTC, và trả nó cho khách hàng.
Tôi chạy vào một nếp nhăn khác, điều này làm phức tạp hơn nữa. cách thức này xử lý ngày trả lại cho tháng 12 tiếp theo trong múi giờ của tôi cho Tiết kiệm ban ngày. Nếu nó chỉ sử dụng bù đắp, sau đó nhiều múi giờ phù hợp, và hầu hết trong số họ không sử dụng tiết kiệm ánh sáng ban ngày. – DevelopingChris
- 1. tên múi giờ không xác định trong R strptime/as.POSIXct
- 2. Setting múi giờ mặc định không hoạt động mặc dù múi giờ là hợp lệ
- 3. Symfony2: Nơi đặt múi giờ do người dùng xác định
- 4. Nhận múi giờ từ DateTime
- 5. Định dạng múi giờ datetime
- 6. java múi giờ không chính xác
- 7. Xác định bù đắp múi giờ trong T-SQL
- 8. Xác định yêu cầu của grunt 'không xác định'
- 9. Tôi có thể sử dụng __init__.py để xác định các biến toàn cầu không?
- 10. Làm thế nào để bạn chuyển đổi ngày/giờ từ một múi giờ này sang múi giờ khác trong R?
- 11. Nút yêu cầu - Cách xác định xem có xảy ra lỗi trong khi yêu cầu không?
- 12. Định dạng chuỗi ngày giờ mặc định với múi giờ
- 13. postgres múi giờ mặc định
- 14. Jaxb DateTime không có múi giờ
- 15. Xuất cơ sở dữ liệu - múi giờ không xác định hoặc không chính xác
- 16. Chuyển đổi các ngày JSON không có múi giờ
- 17. Cách chỉ định múi giờ trong UIDatePicker
- 18. Cách đặt chính xác múi giờ mysql
- 19. RequireJs - Xác định vs Yêu cầu
- 20. Moment.js: Ngày định dạng trong một múi giờ cụ thể
- 21. JSP/Servlet Cách xác định xem yêu cầu HTTP đến từ yêu cầu ajax
- 22. Java không tạo ra thông tin múi giờ chính xác
- 23. Python pytz Chuyển đổi dấu thời gian (định dạng chuỗi) từ một múi giờ sang một múi giờ khác
- 24. Có phải múi giờ cụ thể sử dụng DST ngay bây giờ không?
- 25. git: múi giờ và timestamp định dạng
- 26. PHP - strtotime, chỉ định múi giờ
- 27. Mã hóa không xác định: idna trong Yêu cầu Python
- 28. Bạn có thể thực hiện yêu cầu HTTP PATCH từ Javascript không?
- 29. Bạn có thể đưa ra yêu cầu kéo từ dòng lệnh trên GitHub không?
- 30. Cách xác định múi giờ từ kinh độ và vĩ độ trong iOS
Cảm ơn bạn đã tạo phiên bản dài nhất hte của Không tôi đã nghe hôm nay. – DevelopingChris
Tôi từng tự hỏi tại sao tôi có quảng cáo địa phương cho Oslo, Na Uy mỗi khi tôi lướt net bằng Opera Mini trên điện thoại của mình, trước khi tôi nhận ra rằng nó bị IP chuyển sang vị trí địa lý ... Nó chỉ xảy ra rằng Oslo là một vài các múi giờ cách xa nơi tôi sống :-) – Kaniu
ChanChan: Bạn luôn có thể tin tưởng vào điều đó;) – BenAlabaster