"datetime.now" - 왜 GMT를 반환합니까?
-
18-09-2019 - |
문제
Win2003 서버에서 실행중인 Timezone이 (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 (Mountain Standard Time)에 있습니다 !! :(
해결책
많은 연구를 마친 후 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();
}
제휴하지 않습니다 StackOverflow