如何通过减去 logstash 中给定的年、月、日来计算从今天开始的旧日期?
How to calculate old date from today by subtracting given years, months, days in logstash?
我想使用 logstash 管道减去给定年、月、日的当前日期。
例如:今天 = 2021 年 8 月 1 日
给定值:年=25,月=10,天=10
预计日期:1995 年 9 月 22 日
我的 logstash 过滤器部分:
ruby {
code => '
years = 25
months = 10
days = 10
datenow = Time.now.utc.to_date
delUntilYear = datenow.year - "#{years}".to_i
delUntilMonth = datenow.month - "#{months}".to_i
delUntilDay = datenow.day - "#{days}".to_i
event.set("[deleteTillDate]", "#{delUntilYear}-#{delUntilMonth}-#{delUntilDay} 00:00:00.000")
'
}
这为 delUntilMonth 和 delUntilDay 提供了负值。
如何处理这种情况?
您可以使用 DateTime
ruby {
code => '
datenow = DateTime.now
datenow = datenow.prev_year(25)
datenow = datenow.prev_month(10)
datenow = datenow.prev_day(10)
event.set("[deleteTillDate]", datenow.to_date.to_s)
'
}
会产生
"deleteTillDate" => "1995-10-25",
我想使用 logstash 管道减去给定年、月、日的当前日期。
例如:今天 = 2021 年 8 月 1 日
给定值:年=25,月=10,天=10
预计日期:1995 年 9 月 22 日
我的 logstash 过滤器部分:
ruby {
code => '
years = 25
months = 10
days = 10
datenow = Time.now.utc.to_date
delUntilYear = datenow.year - "#{years}".to_i
delUntilMonth = datenow.month - "#{months}".to_i
delUntilDay = datenow.day - "#{days}".to_i
event.set("[deleteTillDate]", "#{delUntilYear}-#{delUntilMonth}-#{delUntilDay} 00:00:00.000")
'
}
这为 delUntilMonth 和 delUntilDay 提供了负值。 如何处理这种情况?
您可以使用 DateTime
ruby {
code => '
datenow = DateTime.now
datenow = datenow.prev_year(25)
datenow = datenow.prev_month(10)
datenow = datenow.prev_day(10)
event.set("[deleteTillDate]", datenow.to_date.to_s)
'
}
会产生
"deleteTillDate" => "1995-10-25",