"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();
}