Shopifyでショップのタイムゾーンを日本にしている場合は、注文時間(created_at)はJSTで格納されるので問題ないのですが、注文管理で明細表を印刷したり、Print Orderなどで納品書等を印刷する際に下記の書き方をすると、
{{ 'now' | date: '%Y/%m/%d %H:%M' }}
例えば、日本時間 2023年10月10日23時57分の場合、
2023/10/10 14:57
とUTCで出力されてしまいます。
Liquidには、9時間を加算するとかできないので、一旦UNIX時間に変換し、9時間分の秒を加算し、日付形式に戻す必要があります。
{% assign jisa = 9 | times: 60 | times: 60 %}
{{ 'now' | date: '%s' | plus: jisa | date: '%Y/%m/%d %H:%M' }}
変数 jisa に時差分の9をセットし、それに対して 60(分)x 60(秒)を掛け算します。
この時、変数 jisa には9時間分の秒数 32400 (秒)が格納されています。
‘now’ で現在の時間を取得し、 date: ‘%s’ でUNIX時間で表示を戻します。
変換後、jisa(32400)を加算し、date: ‘%Y/%m/%d %H:%M’に整形します。
これで、JSTで出力することができました。
UNIX時間とは・・・
コンピューターシステム上での時刻表現の一種。協定世界時(UTC)での1970年1月1日午前0時0分0秒(UNIXエポック)から形式的な経過秒数として表される。
Amazon.co.jp: エンジニアのためのShopify開発バイブル 電子書籍: フィードフォースグループ, 加藤 英也, 小飼 慎一, 佐藤 亮介, 大道 翔太, 長岡 正樹: Kindleストア
Amazon.co.jp: エンジニアのためのShopify開発バイブル 電子書籍: フィードフォースグループ, 加藤 英也, 小飼 慎一, 佐藤 亮介, 大道 翔太, 長岡 正樹: Kindleストア
コメント