Mongo DBUTC时间问题

2015-07-24 11:10:40 · 作者: · 浏览: 3
偶然导入一批数据,发现在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) ;  
    } 
}