我想在数据表中添加一个字段,该字段根据另一个日期字段显示经过的时间。具体来说,我有一个提供事件日期和时间的字段,并且需要另一个字段来显示该事件发生在 1 天 2 小时 15 分钟前。当他们在一分钟后查看相同的可视化时,该字段应更新为 1 天 2 小时 16 分钟前。
我知道我可以让用户选择他们想要关注的时间范围,但我试图从提供该字段的先前(非 ELK)解决方案中复制功能。
我想在数据表中添加一个字段,该字段根据另一个日期字段显示经过的时间。具体来说,我有一个提供事件日期和时间的字段,并且需要另一个字段来显示该事件发生在 1 天 2 小时 15 分钟前。当他们在一分钟后查看相同的可视化时,该字段应更新为 1 天 2 小时 16 分钟前。
我知道我可以让用户选择他们想要关注的时间范围,但我试图从提供该字段的先前(非 ELK)解决方案中复制功能。
所以这就是我想出的:
long different = (System.currentTimeMillis() - doc['BeginDate'].value);
long secondsInMilli = 1000;
long minutesInMilli = secondsInMilli * 60;
long hoursInMilli = minutesInMilli * 60;
long daysInMilli = hoursInMilli * 24;
long elapsedDays = different / daysInMilli;
different = different % daysInMilli;
long elapsedHours = different / hoursInMilli;
different = different % hoursInMilli;
long elapsedMinutes = different / minutesInMilli;
different = different % minutesInMilli;
long elapsedSeconds = different / secondsInMilli;
different = different % secondsInMilli;
if(elapsedSeconds < 1) {
different.toString() + " milliseconds";
} else if (elapsedSeconds == 1) {
elapsedSeconds.toString() + " second, " + different.toString() + " milliseconds";
} else if (elapsedMinutes < 1) {
elapsedSeconds.toString() + " seconds, " + different.toString() + " milliseconds";
} else if (elapsedMinutes == 1) {
elapsedMinutes.toString() + " minute, " + elapsedSeconds.toString() + " seconds";
} else if (elapsedHours < 1) {
elapsedMinutes.toString() + " minutes, " + elapsedSeconds.toString() + " seconds";
} else if (elapsedHours == 1) {
elapsedHours.toString() + " hour, " + elapsedMinutes.toString() + " minutes";
} else if (elapsedDays < 1) {
elapsedHours.toString() + " hours, " + elapsedMinutes.toString() + " minutes";
} else if (elapsedDays == 1) {
elapsedDays.toString() + " day, " + elapsedHours.toString() + " hours";
} else {
elapsedDays.toString() + " days, " + elapsedHours.toString() + " hours";
}
我在索引模式中添加了一个脚本字段,语言选择“无痛”,类型选择“日期”,格式选择“字符串”,转换为“-无-”。
它不漂亮,但它似乎工作。我确信它可以大大改进,但它似乎符合我的需要。希望这对其他人有帮助。