逆引きFormula に戻る

以下のような質問がありました。

年は式がありますし、月は12の剰余を取ればいいので簡単でしたが、最後の日付をどうやったら取得できるかを考えていました。取得した年と月をずらしてあげればよいのではと気づき、以下のような形で実装できました。要望通りのものが作れているのではないかと思います。

  1. ○年を取得 (end が過去の場合にはマイナス)

    dateBetween(prop("End"), prop("Start"), "years")
    
  2. ○ヶ月を取得 (end が過去の場合にはマイナス)

    dateBetween(prop("End"), prop("Start"), "months") % 12
    
  3. 1, 2 のオフセットをずらした日付を取得

    dateAdd(dateAdd(prop("Start"), prop("year"), "years"), prop("month"), "months")
    
  4. オフセットをずらした日付と比較することで○日を取得 (end が過去の場合にはマイナス)

    dateBetween(prop("End"), prop("year_month_add"), "days")
    
  5. ○年○ヶ月○日の文字列を作成 (前後関係でマイナスを調整)

    (prop("Start") < prop("End")) ? (((prop("year") != 0) ? (format(prop("year")) + "年") : "") + ((prop("month") != 0) ? (format(prop("month")) + "ヶ月") : "") + format(prop("date")) + "日") : (((prop("year") != 0) ? (format(-prop("year")) + "年") : "") + ((prop("month") != 0) ? (format(-prop("month")) + "ヶ月") : "") + format(-prop("date")) + "日")
    

    日付間隔テスト