首页 > 数据库技术 > 详细

MongoDB UMT时间问题

时间:2015-03-24 11:00:46      阅读:354      评论:0      收藏:0      [点我收藏+]
  • 偶然导入一批数据,发现在MongoVUE中看到的日期比实际的日期少了8个小时,原因为MongDB采用的是UMT时间(世界时间时)
  • 如果想要其正常显示,可设置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<Document> collection = db.getCollection("Test");
		// 读取数据
		MongoCursor<Document> 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) ;  
    } 
}


MongoDB UMT时间问题

原文:http://blog.csdn.net/yueritian/article/details/44588169

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!