如何通过减去 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",