今回紹介するのは、Liquid上の日付出力で日付を加算して○日後を実現する方法です。
例えば日付指定を行った際に、お客様に到着する日時とこちらが発送する日時は異なります。その際に、お客様が指定した日時をもとに発送日を算出するようなシチュエーションで便利かと思います。
使う場所は限定的ではありますが、誰かの役に立てばなぁと思い書いてみます笑
Liquidで日付を出力する方法
まず最初にLiquidで日付を出力する方法です。今回は商品が作成された日を参考に算出してみます。
{{ product.created_at | date: "%Y-%m-%d" }}
で"2022-09-30"のような出力になります。
このdate以降の出力方法まとめについては下記記事にまとめてありますので、もしよろしいければご参考までに。
[Shopify]Liquidで日付出力する際のフォーマット まとめ一覧
Liquidで日付を足して何日後という計算を実現する方法
それでは次に本題の"特定の日付の何日後を出力する方法"の紹介に移っていきます。処理の方法としては
- 特定の日付を秒数に変換する
- ○日後の日数分を秒数に換算
- 上記2つを加算
- 秒数換算から通常の日付に戻す
という流れになります。
Liquidのコードで書いてみると
{% assign todayDateSecond = "now" | date "%s" %}
{% assign daysInSeconds = 7 | times: 24 | times: 60 | times: 60 %}
{% assign futureDate = todayDateSecond | plus: daysInSeconds %}
{{ futureDate | date: "%Y-%d-%d" }}
のような形で7日後の日付が取得できます。ちなみに"now"で現在の日付を取得しています。
1行ずつ解説していくと、、、
①まず最初に現在の日付"now"を秒数に変換
{% assign todayDateSecond = "now" | date "%s" %}
②7日間を秒数に変換。
7日間 x 24時間 x 60分間 x 60秒間 = 7日間の秒数
{% assign daysInSeconds = 7 | times: 24 | times: 60 | times: 60 %}
③ ①②を加算(この時点では、まだ秒数表示)
{% assign futureDate = todayDateSecond | plus: daysInSeconds %}
④秒数を日付表示に変更して出力
{{ futureDate | date: "%Y-%d-%d" }}
という流れになっています。
これでShopifyストアにおいて日付換算の何日後を計算することができました。秒数はとても便利ですね。日付の換算や計算をLiquidで行いたい時は、とりあえず秒数換算してみると覚えておいても良いかも知れません。
ちなみに、Liquidで日付比較する方法も下記にまとめてあるので、もし良ければ。
[Shopify] Liquidで日付を取得して比較する方法
と言っても、ここまで読んでくださった方であれば、既に日付比較できちゃいますかね笑 (そうです、秒数です!)
[Shopify]Liquidで日付を加算して何日後の計算を実現する方法 まとめ
以上、Shopifyで特定の日付の何日後を取得する方法でした。ちなみに、何日後ができるということは、何日前も実現可能ですね。
{% assign futureDate = todayDateSecond | minus: daysInSeconds %}
という形でplusの場所をminusにすれば簡単に計算できます。
日付関連の操作ってShopifyのストア構築などで良く出てくるので、意外と抑えておきたいポイントの一つです。
それでは最後までお読みいただき、ありがとうございました!本日も良い1日を!