MongoDB bson_date_t到当地时间

时间:2014-06-27 06:55:09

标签: c++ mongodb

我将日期添加到mongodb,就像这样

bson_append_date(b,"uploadDate",(bson_date_t)1000*time(NULL));

请记住,这将追加自#epoch UTC"以来的#34;毫秒并保存为2014-06-27 06:11:56

现在我正在阅读它,它给出了毫秒(1403852029)这是完全正确的。现在我想把它转换成当地时间。我尝试使用C ++的localtime函数,但确实获得了成功,因为mongodb返回的时间是int64_t。

if(bson_iterator_type(&it)==BSON_DATE)
bson_date_t date_it = bson_iterator_date( &it );

其中bson_date_t是typedef int64_t bson_date_t;。任何人都可以告诉我如何从毫秒获得当地时间。

2 个答案:

答案 0 :(得分:0)

获取适用于localtime的有效time_t应该与您在正向转换中所做的完全相反:

bson_append_date(b,"uploadDate",(bson_date_t)1000*time(NULL));

要获得可行的time_t,您应该执行以下操作:

time_t rawTime = (time_t)(bson_iterator_date( &it ) / 1000);
struct tm * timeinfo = localtime (&rawTime);

答案 1 :(得分:0)

另一种方法。

bson_date_t date_it = bson_iterator_date( &it );
struct tm* ts;
time_t epoch_time_as_time_t= date_it/1000;
ts=localtime(&epoch_time_as_time_t);
strftime(upload_Date,sizeof(upload_date),"%a %Y-%m-%d %H:%M:%S %Z",ts);