興味があったので試作してみましたが、無理やりな形にしかできませんでした…。
作ってはみたので一応記載したいと思います。
■参考情報
基本的には以下の投稿を基本にしています。
「来週」のように日付をずらすための説明が書かれていますので参照ください。
■今週の水曜
以降は作成したサンプルですが、構造だけでなく変数名なども適当なのと、ちゃんとテストできていない点をご了承ください。
もっとシンプルかつ汎用性のある形で作りたかったのですが、うまくまとまりませんでした。
今週の場合、現在の秒数からマイナスとプラスの両方のパターンが発生するため、起点となる曜日を軸に調整する必要がありました。
「今日が金曜なら、今週の水曜は2日前(-2日)」で、「今日が月曜なら、今週の水曜は2日後(+2日)」という形です。
{% capture dayOfTheWeek %}{{ "now" | date: "%a"}}{% endcapture %}
{% case dayOfTheWeek %}
{% when 'Mon' %}
{% assign thisWeekDifference = 86400 | times: 2 %}
今週の水曜日は{{ "now" | date: "%s" | plus: thisWeekDifference | date: "%Y-%m-%d %H:%M / %a" }}
{% when 'Tue' %}
{% assign thisWeekDifference = 86400 | times: 1 %}
今週の水曜日は{{ "now" | date: "%s" | plus: thisWeekDifference | date: "%Y-%m-%d %H:%M / %a" }}
{% when 'Wed' %}
{% assign thisWeekDifference = 86400 | times: 0 %}
今週の水曜日は{{ "now" | date: "%s" | date: "%Y-%m-%d %H:%M / %a" }}
{% when 'Thu' %}
{% assign thisWeekDifference = 86400 | times: 1 %}
今週の水曜日は{{ "now" | date: "%s" | minus: thisWeekDifference | date: "%Y-%m-%d %H:%M / %a" }}
{% when 'Fri' %}
{% assign thisWeekDifference = 86400 | times: 2 %}
今週の水曜日は{{ "now" | date: "%s" | minus: thisWeekDifference | date: "%Y-%m-%d %H:%M / %a" }}
{% when 'Sat' %}
{% assign thisWeekDifference = 86400 | times: 3 %}
今週の水曜日は{{ "now" | date: "%s" | minus: thisWeekDifference | date: "%Y-%m-%d %H:%M / %a" }}
{% when 'Sun' %}
{% assign thisWeekDifference = 86400 | times: 4 %}
今週の水曜日は{{ "now" | date: "%s" | minus: thisWeekDifference | date: "%Y-%m-%d %H:%M / %a" }}
{% endcase %}
■来週の水曜
来週の場合は現在の秒数からプラスするだけなのでもう少しシンプルにできます。
{% capture dayOfTheWeek %}{{ "now" | date: "%a"}}{% endcapture %}
{% case dayOfTheWeek %}
{% when 'Mon' %}
{% assign nextWeekDifference = 86400 | times: 9 %}
{% when 'Tue' %}
{% assign nextWeekDifference = 86400 | times: 8 %}
{% when 'Wed' %}
{% assign nextWeekDifference = 86400 | times: 7 %}
{% when 'Thu' %}
{% assign nextWeekDifference = 86400 | times: 6 %}
{% when 'Fri' %}
{% assign nextWeekDifference = 86400 | times: 5 %}
{% when 'Sat' %}
{% assign nextWeekDifference = 86400 | times: 4 %}
{% when 'Sun' %}
{% assign nextWeekDifference = 86400 | times: 3 %}
{% endcase %}
来週の水曜日は{{ "now" | date: "%s" | plus: nextWeekDifference | date: "%Y-%m-%d %H:%M / %a" }}
■コンテンツキャッシュの問題
上記投稿はこの件に関連するものですが、以下のように書かれています。
It’s very important to note that since Shopify caches content it’s possible for the date to be out of sync with the current time. So in other words it might be Monday, but the code still thinks it is Sunday. Do not rely on dates in Liquid to be 100% accurate due to this caching.
コンテンツがキャッシュされるため、liquidで日付を用いても100%正確な表示にはならないという指摘です。
■留意事項
サンプルコードの以下の「%H:%M / %a」は時間や曜日がわかりやすいように追加してただけなので、フォーマット指定部分は適宜書き換えてください。
date: "%Y-%m-%d %H:%M / %a"
他の方がもっとちゃんとした例を提示されたり、このサンプルのおかしな部分を訂正したりしていただけるのではと思いますので、このサンプルは使わずに参考程度に見ていただくのが安全かと思います。