设为首页 加入收藏

TOP

Mongo DBUTC时间问题
2015-07-24 11:10:40 来源: 作者: 【 】 浏览:1
Tags:Mongo DBUTC 时间 问题
偶然导入一批数据,发现在MongoVUE中看到的日期比实际的日期少了8个小时,原因为MongDB采用的是UTC时间(协调时间时)如果想要其正常显示,可设置MongoVUE,选择Tools下的Preferences,弹出设置,如下图:设置为Local Timezone后,重新打开view即可 \
引申出几个问题,第一个为日期如何查询? 第二个为在程序中如何操作?第一个问题,查询的时候,在工具中,MongoDB会自动将查询的日期减去8小时去查,按正常理解来操作就行,注意图中红框处即可,如下图: \
第二个问题,在程序中,读取时间,以及插入时间(使用3.0最新Drive API):
package org.mice;

import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.TimeZone;

import org.bson.Document;

import com.mongodb.MongoClient;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoCursor;
import com.mongodb.client.MongoDatabase;


public class Test {

	/**
	 * 测试
	 * @param args
	 */
	public static void main(String[] args) {
		MongoClient mongo = new MongoClient("localhost", 27017);
		MongoDatabase db = mongo.getDatabase("chen");
		MongoCollection collection = db.getCollection("Test");
		// 读取数据
		MongoCursor cursor = collection.find().iterator();
		try {
		    while (cursor.hasNext()) {
		    	Document temp = cursor.next();
		    	System.out.println(Test.getLocalTimeFromUTC((Date)temp.get("MyDate")));
		    }
		} finally {
		    cursor.close();
		}
		// 测试插入一条记录
		Document doc = new Document("MyDate", new Date());
		collection.insertOne(doc);
	}
	
	private static DateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss") ;  
	
	public static String getLocalTimeFromUTC(Date UTCDate){  
		format.setTimeZone(TimeZone.getDefault()) ;  	// 不加的话,读取出的时间也正确
		return format.format(UTCDate) ;  
    } 
}


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇DDL_LOCK_TIMEOUT的作用 下一篇数据切分――Mysql分区表的建立及..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·数据库:推荐几款 Re (2025-12-25 12:17:11)
·如何最简单、通俗地 (2025-12-25 12:17:09)
·什么是Redis?为什么 (2025-12-25 12:17:06)
·对于一个想入坑Linux (2025-12-25 11:49:07)
·Linux 怎么读? (2025-12-25 11:49:04)