2015-04-20 4 views
0

У меня возникла проблема с веб-сайтом ASP.net, который размещен в плане совместного размещения GoDaddy. Время, похоже, отличается от GMT на 8 часов, несмотря на то, что культура и культура пользовательского интерфейса установлены в Великобритании.C# - Невозможно установить правильный часовой пояс

Смотрите этот пример:

Date.Now.ToString(New CultureInfo("en-GB")) & " - Culture: " + CultureInfo.CurrentCulture.Name + " - UI Culture: " + CultureInfo.CurrentUICulture.Name; 

В этом выходы:

20/04/2015 10:16:17 - Культура: ан-ГБ - Культура интерфейса: EN

Время Великобритании, называя это заявление 18:16:17.

Я также попытался, не культуры:

Date.Now.ToString("dd/MM/yyyy"); 

и UtcNow вместо:

Date.UtcNow.ToString(New CultureInfo("en-GB")) + " - Culture: " & CultureInfo.CurrentCulture.Name + " - UI Culture: " + CultureInfo.CurrentUICulture.Name; 

Но я все еще получаю такое же неправильное время. Любая помощь будет принята с благодарностью.

ответ

1

Как @artisdextrus словам, DateTime структура всегда всегда представляет раз в любом серверном по местному времени или по времени UTC. Если вы знаете часовой пояс конечных пользователей, вы можете представлять конечный пользователя местное время с классом DateTimeOffset:

var myUsersTimeZone = "Central Standard Time"; 
var myServersTimeAsUtc = DateTime.UtcNow; 
var myUsersTime = TimeZoneInfo.ConvertTimeFromUtc(
      myServersTimeAsUtc, 
      TimeZoneInfo.FindSystemTimeZoneById(myUsersTimeZone)); 
+0

Привет, это сработало отлично. –

1

Часовой пояс в ASP.net - это часовой пояс ближайшего веб-сервера, который вы используете, который может находиться в следующем часовом поясе. Один из способов - использовать час JavaScript, который дает местное время для конечного пользователя и вычитать его с часового пояса UTC, чтобы получить локальный часовой пояс.

<script type="text/javascript"> 
    window.onload = function() { 
     var localTime = new Date(); 
     var hours = localTime.getHours(); 
     document.getElementById("<%=Hidden1.ClientID%>").value = hours; 
    } 
</script> 

Default.aspx.cs

UTChour = DateTime.UtcNow.ToString("HH") 
localHour = Hidden1.Value 
timezone = UTChour - localHour 
+0

Приветствие за ответ, я пошел с @ LiamK Ответит просто потому, что я бы предпочел, чтобы это сделать все серверная сторона. –

Смежные вопросы