最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

使用mongo $ hour检索本地时间信息

运维笔记admin10浏览0评论

使用mongo $ hour检索本地时间信息

使用mongo $ hour检索本地时间信息

我目前在mongob模型的帮助下将文档存储在mongodb中。按日期查询工作正常,但是当我尝试应用$ hour运算符时,似乎返回ISO时间,而不是本地时间。

当前的命名约定为我提供了一个文件名,其中包含创建文件的时间戳:YYYYMMDDHHMMSS-foo-bar.file

示例:DB中的导入导致解析时间戳的以下值:2014 04 02 07 57 33-foo-bar.file被解析为ISODate("2014-04-02T05:57:33Z")

当我查询找到这个项目时:我创建这样的新日期对象(日期是假的,只是为了我选择的查询方法):

var begin = new Date(2014, 01, 10, 13, 00, 00);
var end = new Date(2014, 01, 10, 20, 00, 00);

db.pinas.aggregate([{
    $project: {
        [attributes I need...]
    }
, {
    $match: {
        'start_time': {
            $gte: begin, //ISODate
            $lt: end //ISODate
        }
    }
}]);

再次,这些ISOD似乎不存储时区信息,虽然in this post ISODates包含一些东西:注意尾随+01:00 ISODate("2012-07-14T01:00:00+01:00")

现在我有两个问题/问题:

我在某处读到,在ISODates中返回datetime信息的重点是将“精细工作”转移到应用程序而不是DBMS,这是真的:它在解析ISODatestring的情况下工作,我检索正确的时间(I通过了解我的本地设置来假设?如果服务器在另一个时区怎么办?)

当我想使用$hour日期聚合运算符时,我该如何将它带回当地时间?当我只返回$ hour时,它是如何工作的?

回答如下:

从版本3.6开始,您可以添加时区属性以在正确的时间内获取小时:

{ date: <dateExpression>, timezone: <tzExpression> }

例如:

{ $hour: {
    date: new Date("August 14, 2011Z"),
    timezone: "America/Chicago"
} }

有关详细信息,请参阅$ hour documentation https://docs.mongodb/manual/reference/operator/aggregation/hour/

发布评论

评论列表(0)

  1. 暂无评论