当您使用datetime更改到不同的时区时,时间戳仍然保留Z,这表明时间戳是UTC。如果将时间戳转换为字符串,则也会保留此选项。唯一的选择是使用日期时间格式来删除它,但是应该是这样吗?
"transform": {
"type": "dtl",
"rules": {
"default": [
["add", "1utc-time-input", "2017-04-12T22:00:00.74Z"],
["add", "2utc-parsed",
["datetime-parse", "%Y-%m-%dT%H:%M:%S.%fZ", "_T.1utc-time-input"]],
["add", "3utc-as-oslo",
["datetime-shift", "UTC", "Europe/Oslo", "_T.2utc-parsed"]],
["add", "4utc-as-oslo-formatted",
["datetime-format", "%Y-%m-%dT%H:%M:%S.%f", "_T.3utc-as-oslo"]],
["add", "5utc-as-oslo-as-string",
["string", "_T.3utc-as-oslo"]]
]
}
}发布于 2017-12-12 17:01:15
没有,这一点在以后版本的芝麻中得到了改进。现在,您可以在解析时间戳字符串时覆盖时区,以避免问题:
{
"_id": "timezone-shift",
"type": "pipe",
"source": {
"type": "embedded",
"entities": [{
"_id": "foo",
"timestamp": "2017-04-12T22:00:00.74Z"
}]
},
"transform": {
"type": "dtl",
"rules": {
"default": [
["add", "original",
["datetime-parse", "%Y-%m-%dT%H:%M:%S.%fZ", "_S.timestamp"]
],
["add", "shifted",
["datetime-parse", "Europe/Oslo", "%Y-%m-%dT%H:%M:%S.%fZ", "_S.timestamp"]
],
["add", "original-formatted-as-local-oslo-time",
["datetime-format", "Europe/Oslo", "%Y-%m-%dT%H:%M:%S.%f", "_T.original"]
],
["add", "shifted-formatted-as-local-oslo-time",
["datetime-format", "Europe/Oslo", "%Y-%m-%dT%H:%M:%S.%f", "_T.shifted"]
],
["add", "original-as-string",
["string", "_T.original"]
],
["add", "shifted-as-string",
["string", "_T.shifted"]
]
]
}
}
}给出了以下结果:
[
{
"_id": "foo",
"original": "~t2017-04-12T22:00:00.74Z",
"original-as-string": "2017-04-12T22:00:00.74Z",
"original-formatted-as-local-oslo-time": "2017-04-13T00:00:00.740000",
"shifted": "~t2017-04-12T20:00:00.74Z",
"shifted-as-string": "2017-04-12T20:00:00.74Z",
"shifted-formatted-as-local-oslo-time": "2017-04-12T22:00:00.740000"
}
]https://stackoverflow.com/questions/47748629
复制相似问题