Frage

Ok - ein bisschen wie ein Schluck. Also ich habe das Problem das ist - ich brauche ein Datum für Ablauf zu speichern, wobei nur der Datumsteil erforderlich ist, und ich will keine Zeitzone-Konvertierung. So zum Beispiel, wenn ich einen Ablauf auf „8. März 2008:“ Ich mag, dass Wert auf jedes Client zurückgegeben werden - egal, was ihre Zeitzone ist. Das Problem mit ihm als Datetime-Remoting ist, dass es als „8. März 2008 00:00“ gespeichert / gesendet wird, die für die Kunden bedeutet, aus jeder Zeitzone westlich von mir verbinden es umgewandelt wird und blätterte daher „7. März 2008“ Irgendwelche Vorschläge für dieses Szenario sauber Handhabung? Offensichtlich sendet es als eine Zeichenfolge funktionieren würde. noch etwas ? Vielen Dank, Ian

War es hilfreich?

Lösung

Sie können eine Struktur Datum erstellen, die den Zugriff auf die Details erhalten Sie wollen / müssen, wie:

public struct Date
{
    public int Month; //or string instead of int
    public int Day;
    public int Year;
}

Das ist leicht, flexibel und gibt Ihnen die volle Kontrolle.

Andere Tipps

Ich bin mir nicht sicher, welche Technologie Remote Sie sich beziehen, aber das ist ein echtes Problem mit WCF, die derzeit nur Serialisierung Datetime als xs unterstützt: Datum- und ungeeignet für einen Datum-only-Wert in dem Sie nicht daran interessiert sind, Zeitzonen.

.NET 3.5 stellt die neue Datetime Art, die für die Übertragung einen Datetime zwischen Zeitzonen gut ist, aber mit dem Tag-nur Szenario nicht helfen.

Im Idealfall muss WCF Unterstützung xs optional: Datum für Daten Serialisierung wie hier angefordert:

http://connect.microsoft.com/wcf/feedback /ViewFeedback.aspx?FeedbackID=349215

Ich mache es so: Wenn ich ein Datum im Speicher oder in einer Datei gespeichert ist es immer in einem DateTime- in UTC. Als ich das Datum für den Benutzer zeigen, ist es immer ein String. Wenn ich zwischen der Saite und der Datetime konvertieren Ich habe auch die Zeitzone-Konvertierung.

Auf diese Weise habe ich nie mit Zeitzonen in meiner Logik beschäftigen, nur in der Präsentation.

Sie können es als UTC-Zeit senden

dateTime1.ToUniversalTime ()

Ich denke, als Zeitpunkt Zeichenfolge sendet der schnellste / einfachste Weg wäre, obwohl man sich zwingen, ein Gebietsschema aussehen könnte die Zeitumstellung von auftretendem zu stoppen.

Der einfachste Weg, ich dies auf Anwendungen in der Vergangenheit behandelt habe, ist nur das Datum speichern als String in yyyy-mm-dd Format. Es ist unambigious und nicht automatisch durch nichts übersetzt bekommt.

Ja, es ist ein Schmerz ...

Warum Sie es nicht als String senden sie dann zurück konvertieren Typ auf ein Datum nach Bedarf? Auf diese Weise wird es nicht über verschiedene Zeitzonen umgewandelt werden. Halten Sie es einfach.

Edit: Ich mag die Idee Struct, ermöglicht eine gute Funktionalität.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top