java - 将时间调整为时区

标签 java datetime elasticsearch jodatime

我的 Elasticsearch 文档中有一个日期字段。 我正在该领域进行聚合。

这是我的查询

GET _search
{
    "size": 0, 
   "aggregations": {
  "timeslice": {
     "histogram": {
        "script": "doc['ad_inTime'].date.getHourOfDay()",
        "interval": 1,
        "min_doc_count": 0,
        "extended_bounds": {
           "min": 0,
           "max": 23
        },
        "order": {
           "_key": "desc"
        },
        "offset":0
     }
  }
 }
}

现在我想在这一行中传递时区信息(偏移量或时区名称 - 以有效者为准):

"script": "doc['ad_inTime'].date.getHourOfDay()",

并将日期调整为时区。有什么办法可以做到吗?

最佳答案

您可以将时区作为参数传递给脚本,如下所示:

{
  "size": 0,
  "aggregations": {
    "timeslice": {
      "histogram": {
        "script": {
          "inline": "doc['openDate'].date.setZone(DateTimeZone.forID(tz)); doc['openDate'].date.getHourOfDay()",
          "params": {
            "tz": "Europe/London"
          }
        },
        "interval": 1,
        "min_doc_count": 0,
        "extended_bounds": {
          "min": 0,
          "max": 23
        },
        "order": {
          "_key": "desc"
        },
        "offset": 0
      }
    }
  }
}

关于java - 将时间调整为时区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40151552/

相关文章:

ruby - AWS Elasticsearch 服务不断给出 'User anonymous' 错误

ruby - 单页应用程序中的elasticsearch

java - 如何以编程方式重置 recyclerview 的背景按钮(滑动菜单)?

java - 在 Java 中解构 SQL 语句

java - 来自 apache 的 DDLUtils 的替代品

c# - asp.net 日历日期范围

php - HTML 日期时间 到 PHP 到 MySQL

c# - 如何在 Elastic Search 中进行双重嵌套聚合?

java string.replace 使用方法运行太慢

vb.net - 在 NumericUpDown 控件中显示 `00` 而不是 `0`