gpt4 book ai didi

c# - Mongo 和 C# 的日期时间问题

转载 作者:IT老高 更新时间:2023-10-28 13:10:25 24 4
gpt4 key购买 nike

我在使用 c# 驱动程序使用 Mongo 保存和检索日期时遇到问题。出于某种原因,它会截断刻度。

当我存储这个时:

DateTime -> 5/17/2011 7:59:13 PM 
Ticks -> 634412591533741650

我拿回来了:

DateTime -> 5/17/2011 7:59:13 PM 
Ticks -> 634412591533740000

所以如果我尝试这样做:

serverDateTime == mongoDateTime

它总是失败。反正围绕这个?

最佳答案

原因是 BSON DateTime 格式存储的值的精度低于 .NET DateTime 值,因此当您从数据库中读回它时,该值已被截断。

如果您的 DateTime 值是您正在序列化的 C# 类的属性,您可以要求序列化程序将 DateTime 值序列化为包含 BSON DateTime 值(截断)和原始 .NET DateTime 值(存储为蜱)。在这种情况下,反序列化时不会截断该值。

例如:

public class MyClass {
public ObjectId Id;
[BsonRepresentation(BsonType.Document)]
public DateTime MyDateTime;
}

您也可以使用 Int64 或 String 的 BsonRepresentation 并且不会丢失精度,但是存储的文档只有有 Ticks 或字符串表示,而没有 BSON DateTime,这使得很难与 DateTime 相关查询。

您还需要记住,DateTime 值以 UTC 格式存储在数据库中。最佳做法是始终使用 UTC 值进行存储,并且在向用户显示它们时仅使用本地时间。

关于c# - Mongo 和 C# 的日期时间问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6036433/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com