MongoDB
对于时间类型的数据,Mongo中使用BSON标准的时间类型,64位二进制表示的自 Unix 纪元以来的 UTC 毫秒数。所以mongo中的日期本质是一个Int64的数字(UTC时区),所以无法从数据库根本上改变日期的时区。不过,Mongo内置的方法以及各个语言版本的driver都是有时区设置,已实现对开发者透明的时区转换。
C# Driver(2.16.1)
C#中的时间 (DateTime)
DateTime结构体应该是我们用的最多的一种变量类型,基础的用法也比较简单,需要注意的只有一点,就是DateTime是包含时区信息的。这一点是我们可能忽略的。如:
DateTime now = DateTime.Now;
var a = now.Kind;
var b = (a == DateTimeKind.Local);
上面示例中 b为true。注意DateTimeKind属性,是因为我们使用DateTime.Parse时如果时间字符串中没有时区信息,则转换成的时间Kind属性为Unspecified(未指定)。这种情况下,使用第三方库时就无法确定第三方库是按什么时区处理此时间,造成不确定。或者使用.ToLocalTime() 时没有在意自动加了8小时造成问题。如下:
var t = DateTime.Parse("2022-07-08 11:11:11");
b = (t.Kind == DateTimeKind.Local);//b==false
t =