【Shopify】Liquid 上で「現在の日付から◯日後」を表現する方法

 

「◯日後」を表現したいシーンは多い

製品ページや顧客へのメールに配送予定日を表示したり、レッスンや新商品の予約可能日を自動的に変更するなど、Eコマースのインターフェースで「今から◯日後」を表現したいシーンは多いと思います。

Shopify であればそれは Liquid もしくは Shopify Flow(の変数設定)で実装することになります。

ちなみに、Liquid で現在の日付を表現するには以下の記述です。

現在の日付を表示する例

{{ 'today' | date: '%Y-%m-%d' }}

この記事を書いているのは2021年9月30日なので、2021-09-30 と表示されます。

今回は、これに日数を加算する方法について調べてみました。

Unix time で加算

結論からいうと、Unix time で加算すれば可能です。Liquid の date フィルタは Ruby の strftime と同じフォーマット指定が使えるので、date: '%s' で Unix time(秒)に変換できます。

5日加算する例

{% assign seconds = 5 | times: 24 | times: 60 | times: 60 %}
{{ '2021-09-20' | date: '%s' | plus: seconds | date: '%Y-%m-%d' }}

上記の例だと 2021-09-20 に5日加算されて、2021-09-25 と表示されます。

明日の日付を表示したい場合は、1日の秒数は 86400 なので、以下のような記述になります。

翌日の日付を表示する例

{ 'today' | date: '%s' | plus: 86400 | date: '%Y-%m-%d' }}

ちなみに以下の記事を参考にしました。

 

これを応用すると、配送予定日を「フルフィルメントの◯日後」のように指定したり、配送日数がほかの商品より多めにかかる大型商品にだけ到着可能日を提示したり、人気のレッスンに「◯日以降に予約できます」と表示するなど、いろんなシーンに対応しやすくなると思います。

ご参考になれば幸いです。