Supongamos que deseo consultar mongo en dateTime. Tengo dos variables de C# que representan el inicio y la fecha de finalización.IsoDate y DateTime en MongoDB usando C#
1) {20.10.2011 00:00:00}
2) {22.10.2011 00:00:00}
Ahora el BsonDateTime.Create (dateTime) los transformó a un BSON DateTime bien también:
1) 2011-10-20T00: 00: 00 MongoDB.Bson.BsonDateTime
2) 2011-10-22T00: 00: 00 MongoDB.Bson.BsonDateTime
Este es el código creando la fechaTi MES (_value es una cadena):
DateTime dateTime;
bool parsed = DateTime.TryParse(_value, out dateTime);
if (!parsed)
throw new FormatException("Wrong format for a query param");
return BsonDateTime.Create(dateTime);
continuación, el siguiente código crea la consulta:
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);
}
y hago obtener un valor tan extraña en una consulta:
"Sessions.End" : { "$gte" : ISODate("2011-10-19T21:00:00Z"), "$lte" : ISODate("2011-10-21T21:00:00Z") },
Bueno , Busco en Google ISODate pero no he encontrado ninguna razón por la cual deba cambiarse. ¿Está bien?
Usted dice que tiene dos variables de C#, pero no se han mostrado cómo se inicializan o incluso lo tipo ellos son. Sospecho fuertemente que está en el corazón de las cosas, pero no podemos decirlo sin ver el código. Supongo que ha creado * local * DateTime values en lugar de UTC. –
@Jon Skeet, agregó el código para la creación de dateTime, ¿qué es un UTC? –
Ver mi respuesta: siga el enlace para obtener una descripción de UTC. Básicamente, este es un problema de zona horaria, sospecho ... –