我有一个Mongo C#实现,它将datetime存储为UTC.
MongoDB.Bson.Serialization.Options.DateTimeSerializationOptions options =
MongoDB.Bson.Serialization.Options.DateTimeSerializationOptions.UtcInstance;
var serializer =
new MongoDB.Bson.Serialization.Serializers.DateTimeSerializer(options);
MongoDB.Bson.Serialization.BsonSerializer.RegisterSerializer(
typeof(DateTime),
serializer);
Run Code Online (Sandbox Code Playgroud)
我还需要将用户本地时区与UTC一起存储.为了解释,我有两个属性
DateTime WorkItemToCompleteBy{get; set;}
[BsonDateTimeOptions(Kind = DateTimeKind.Unspecified)]
DateTime WorkItemToCompleteByLocal{get; set;}
Run Code Online (Sandbox Code Playgroud)
我想将澳大利亚/美国/印度/其他时间存储在本地属性中,并将相应的UTC值存储在另一个属性中.由于处理了几十个时区,我有代码将UTC转换为所需的时区并将其存储在WorkItemToCompleteByLocal属性中.我希望Mongo将这个值"按原样"存储并将其返回给我.问题是Mongo总是将它存储为ISODate并将值转换为Utc版本.解释.如果UTC是0730小时,我计算布里斯班时间为1730小时并将其设置为WorkitemToCompleteByLocal,它们将保存为
"WorkItemToCompleteBy" : ISODate("2013-06-05T07:30:00Z"),
"WorkItemToCompleteByLocal" : ISODate("2013-06-05T12:00:00Z"),
Run Code Online (Sandbox Code Playgroud)
Mongo将提供的时间解释为本地,服务器位于印度,并将其转换为相当于1200小时的UTC.虽然它将值恢复为1730(IST虽然)但是它违背了我的目的并阻止我在Mongo上运行任何基于本地时间的查询.没有想法.感谢任何帮助,以帮助存储WorkItemToCompleteByLocal日期'原样'而无需修改
我是套接字编程的小伙子.也许我在问一个基本问题.请多多包涵.我写了一个示例netty服务器并从控制台启动它.它运行正常.我遇到的问题是,当我从两个控制台窗口运行相同的服务器时,我希望其中一个抛出'Address in in use'异常.它没有这样做,我不明白为什么.请帮忙.
public static void main(String[] args) {
ChannelFactory cf = new NioServerSocketChannelFactory(Executors.newFixedThreadPool(100), new MemoryAwareThreadPoolExecutor(1000,2048,25096,2,TimeUnit.SECONDS));
//ChannelFactory cf = new OioServerSocketChannelFactory(Executors.newFixedThreadPool(100), Executors.newCachedThreadPool());
ServerBootstrap bootstrap = new ServerBootstrap(cf);
bootstrap.setPipelineFactory(new ChannelPipelineFactory() {
@Override
public ChannelPipeline getPipeline() throws Exception {
return Channels.pipeline(new ChannelHandler("test"));
}
});
bootstrap.setOption("child.keepAlive", true);
bootstrap.setOption("child.tcpNoDelay", true);
bootstrap.setOption("child.reuseAddress", true);
bootstrap.setOption("child.connectTimeoutMillis", 30000);
//NEVER bootstrap.setOption("child.readWriteFair", true);
//bootstrap.setOption("disconnect", true);
bootstrap.setOption("tcpNoDelay", true);
bootstrap.setOption("reuseAddress", true);
bootstrap.setOption("connectTimeoutMillis", 30000);
bootstrap.setOption("readWriteFair", true);
bootstrap.bind(new InetSocketAddress(9998));
}
Run Code Online (Sandbox Code Playgroud)