C # UTC для пользователей по местному времени - PullRequest
5 голосов
/ 01 ноября 2010

У меня есть сайт, где пользователи могут создавать посты. Пользователи могут быть со всего мира, поэтому при публикации я сохраняю дату публикации в виде DateTime.UtcNow. Я использую плагин JQuery time ago, чтобы показать опубликованные данные, похожие на переполнение стека (1 мин назад и т. Д.). Но я не уверен, как преобразовать дату, которую я сохранил в системе, в местное время пользователя? Вот что я использую:

public static MvcHtmlString ConvertToLocalTime(this HtmlHelper htmlHelper, DateTime date)
    {
        DateTime convertedDate = DateTime.SpecifyKind(DateTime.Parse(date.ToString()),DateTimeKind.Utc);
        return MvcHtmlString.Create(convertedDate.ToLocalTime().ToString());
    }

Это позволяет преобразовать время в местное время сервера, но оно мне нужно для локального времени пользователя. Что я делаю неправильно? Я использую .NET MVC 2 и .NET 4.0

Ответы [ 2 ]

10 голосов
/ 01 ноября 2010

Как правило, вы не будете знать точный часовой пояс пользователя на стороне сервера.Вместо того, чтобы пытаться преобразовать в локальное время пользователя на стороне сервера, отправьте время клиенту в UTC и попросите клиента преобразовать время.Плагин TimeAgo делает это автоматически, если вы указали время в полном формате ISO8601:

<abbr class="timeago" title="2008-07-17T09:24:17Z">July 17, 2008</abbr>

Значение Z в конце отметки времени важно;это означает UTC.

0 голосов
/ 01 ноября 2010

Есть ли у вас культура для текущего пользователя?Если это так, вы можете конвертировать в их часовой пояс, используя код из C # - конвертировать время UTC / GMT в местное время

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...