IsoDate und DateTime in MongoDB mit C #

8

Nehmen wir an, ich möchte Mongo auf der DateTime abfragen. Ich habe zwei C # -Variablen, die das Start- und Enddatum darstellen.

1) {20.10.2011 00:00:00}

2) {22.10.2011 00:00:00}

Nun hat BsonDateTime.Create (dateTime) sie auch in eine BSON DateTime-Quelle transformiert:

1) 2011-10-20T00: 00: 00 MongoDB.Bson.BsonDateTime

2) 2011-10-22T00: 00: 00 MongoDB.Bson.BsonDateTime

Dies ist der Code, der die dateTimes erstellt (_value ist eine Zeichenkette):

%Vor%

Dann baut der nächste Code die Abfrage auf:

%Vor%

Und ich bekomme einen so seltsamen Wert in einer Abfrage:

%Vor%

Nun, ich google ISODate, aber habe keinen Grund gefunden, warum es verschoben werden sollte. Ist es in Ordnung?

    
Yurii Hohan 21.10.2011, 09:12
quelle

1 Antwort

12

Ich glaube, das Problem ist, dass DateTime.TryParse Ihnen ein DateTime mit einem Kind von Local ... gibt, während das ISO-Datum immer in UTC . Ich erwarte, dass ein Teil des MongoDB-Codes das lokale DateTime in UTC in eins konvertiert. Es ist weitgehend nicht deine Schuld - im Grunde DateTime ist ein sehr verwirrender Typ .

Ich vermute, wenn Sie DateTimeStyles.AssumeUniversal in Ihrem Parsing-Code angeben, wird es tun, was Sie erwarten.

(Schamloser Plug: Mein eigenes Projekt, Noda Time , macht das alles viel einfacher ...)

>     
Jon Skeet 21.10.2011, 09:25
quelle