私はdateTimeでmongoに問い合わせたいとしましょう。私は、開始日と終了日を表す2つのC#変数を持っています。MongoDBのIsoDateとDateTimeをC#を使用して
1){2011年10月20日夜十二時00分00秒}
2){2011年10月22日夜十二時00分00秒}
今BsonDateTime.Create(dateTimeの)はBSON日時にそれらを転換十分すぎる:
1)2011-10-20T00:00:00 MongoDB.Bson.BsonDateTime
2)2011-10-22T00:00:00 MongoDB.Bson.BsonDateTime
これはdateTiを作成するコードMES(_valueは文字列です):
private QueryComplete MakeQuery(string key, BsonValue value)
{
if (_separatorType == ">=")
return Query.GTE(key, value);
if (_separatorType == "<=")
return Query.LTE(key, value);
return Query.EQ(key, value);
}
と私は、クエリで、このような奇妙な値を得るか:
DateTime dateTime;
bool parsed = DateTime.TryParse(_value, out dateTime);
if (!parsed)
throw new FormatException("Wrong format for a query param");
return BsonDateTime.Create(dateTime);
その後、次のコードは、クエリを構築しますまあ
"Sessions.End" : { "$gte" : ISODate("2011-10-19T21:00:00Z"), "$lte" : ISODate("2011-10-21T21:00:00Z") },
、私はGoogleのISODateをシフトしなければならない理由が見つかりませんでした。大丈夫ですか?
あなたは2つのC#の変数を持っていますが、あなたは彼らが初期化している方法を示す、あるいは何をしていないと言います彼らはタイプです。私は物事の中心にあると強く思っていますが、コードを見ずにはわかりません。私の推測では、あなたはUTCのものではなく* local * DateTimeの値を作成しています。 –
@Jon Skeet、dateTime作成のコードを追加しました。これはUTCとは何ですか? –
私の答えを見てください - UTCの説明についてはリンクをたどります。基本的にこれはタイムゾーンの問題です... –