4

私は次のオブジェクトを持っています:

public class QueueItem
{
    public long _id { get; set; }
    public SiteMapRequestState State { get; set; }
    public int WorkerId { get; set; }
    public DateTime QueuedTime { get; set; }
    public DateTime StartWorkTime { get; set; }
}

オブジェクトをmongoに保存すると、日付が正しく表示されます(DateTimeフィールドには、挿入した正しい日付が含まれています)。ただし、このオブジェクトをプルすると、異なる時間(-3時間)が発生します。

例:StartWorkTime = 6/26/2012 10:00:00 AMでオブジェクトを保存すると、コレクションからオブジェクトを取得すると、StartWorkTimeは6/26/20127: 00 :00AMになります。これにより、プロセス時間の計算が間違ってしまいます。

最新のc#ドライバー(1.4.2.4500)を使用しており、コードとmongoサーバーの両方を同じマシンで実行しています。

何が違いを引き起こす可能性がありますか?

ありがとう!

4

2 に答える 2

7

少し掘り下げた後、私はこの投稿を見つけました:http: //alexmg.com/post/2011/09/30/DateTime-precision-with-MongoDB-and-the-C-Driver.aspx

http://www.mongodb.org/display/DOCS/CSharp+Driver+Serialization+Tutorial#CSharpDriverSerializationTutorial-DateTimeSerializationOptions

DateTimeプロパティを[BsonDateTimeOptions(Kind = DateTimeKind.Local)]属性でマークする必要がありました

于 2012-06-26T08:00:26.010 に答える
0

私は一度この問題を抱えていました。DateTimeKindパラメーターもDateTimeKind.Utcに指定してください。

お役に立てば幸いです。

于 2014-01-08T17:21:46.570 に答える