"DateTime.Now" - почему он возвращает GMT?

Я работаю на сервере Win2003, часовой пояс установлен на (GMT -06:00) центральное время. Я программирую на VS.NET 2005, f/x 2.x. Когда я выполняю следующий код, я не получаю ожидаемых результатов - но только когда он находится на сервере PROD. Любая другая машина работает правильно.

_response.Timestamp = DateTime.Now;

Есть ли где-то скрытый параметр, который может сделать это для веб-приложений.NET? Я просмотрел все конфиги, которые смог найти, но сразу ничего не увидел.


ПРИМЕЧАНИЕ: это происходит на всех наших серверах...


ПРИМЕЧАНИЕ. Я попытался использовать дату, переданную на мою страницу:

[parameter 3] (Date): Thu Nov 05 22:23:16 MST 2009  // Web client time
LastPlayed (Date): Fri Nov 06 05:23:16 MST 2009  // Simple boxing of value

public class FlashObject
{
    #region Declarations
    public DateTime LastPlayed;
    public List<PlayList> Characters;
    public List<PlayList> Variations;
    #endregion
}

Вышеуказанный объект просто увлажняется так:

internal static void GetPlayer(FlashObject flashObject, DateTime clientPlayTime)

Обратите внимание, что они оба в MST (Горное Стандартное Время)!!:(

2 ответа

Решение

После долгих исследований я изменил свои переменные DateTime на переменные DateTimeOffset. Я также изменил код Flash/Flex, чтобы передать имя TZ и смещение. С помощью этой информации я могу точно отслеживать время клиента.

private void SetUserInfo(DateTimeOffset ClientTime, int Offset)
{
    if (Offset != 0 && ClientTime.DateTime == ClientTime.UtcDateTime)
    {
        ClientTime = ClientTime.AddHours(Offset);
        _actionDateTime = new DateTimeOffset(ClientTime.DateTime, new TimeSpan(Offset, 0, 0));
    }
    else
        _actionDateTime = ClientTime;

    _actionUtcDateTime = new DateTimeOffset(_actionDateTime.DateTime.ToUniversalTime(), new TimeSpan(0, 0, 0));
}

С помощью приведенного выше фрагмента кода я могу сэкономить время клиента и время UTC.

Что такое _request?

Внутренне, на HttpContext объект, отражатель показывает этот код:

public DateTime get_Timestamp()
{
    return this._utcTimestamp.ToLocalTime();
}
Другие вопросы по тегам