【Shopify】UTCをJSTで出力する

スポンサーリンク

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ストア

コメント

タイトルとURLをコピーしました