„DateTime.Now“ - warum es GMT zurückkehren?
-
18-09-2019 - |
Frage
Ich arbeite auf einem Win2003 Server, Time-Zone auf (GMT -06: 00) Central Time. Ich programmiere mit VS.NET 2005 f / x 2.x. Wenn ich den folgenden Code ausführen kann ich nicht die erwarteten Ergebnisse - aber nur, wenn es auf dem ART-Server. Jede andere Maschine erscheint um korrekt zu arbeiten.
_response.Timestamp = DateTime.Now;
Gibt es eine Einstellung irgendwo versteckt, dass dies zu .NET Web-Anwendungen tun? Ich schaute durch alle configs ich finden konnte, aber nichts richtig aus sehen.
Hinweis: Dies ist auf allen unseren Servern passiert ...
Hinweis: Ich habe versucht, ein Datum mit meiner Seite übergeben:
[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
}
Die obige Aufgabe wird einfach so mit Feuchtigkeit versorgt:
internal static void GetPlayer(FlashObject flashObject, DateTime clientPlayTime)
Beachten sie sind beide in der MST (Mountain Standard Time) !! : (
Lösung
Nach vieler Forschung Ich habe meine Datetime-Variablen in Datetime Variablen verändert. Ich habe auch den Flash / Flex-Code in einem TZ-Namen passieren und Offset. Mit diesen Informationen kann ich Client mal verfolgen genau.
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));
}
Mit dem oben Stück Code ich jetzt Client-Zeit sowie die UTC-Zeit sparen kann.
Andere Tipps
Was ist _request
?
Intern auf dem HttpContext
Objekt, Reflektor zeigt diesen Code:
public DateTime get_Timestamp()
{
return this._utcTimestamp.ToLocalTime();
}