FROM CACHE - jp_header
解決済

liquid の date フィルターは Unixタイムスタンプをフィルターできますか?

abekeishi
遊覧客
22 11 28

いつもお世話になっております。

最初にまとめますと、質問はこの2つになります。

1. dateフィルターは unix timestampを日付に変換できるか?

2. unix timestamp をうまく日付に変換する方法はないか?(カスタムのフィルターを作成する方法など)

もし何かお分かりの方がいらっしゃったら教えていただけますと嬉しいです🙇‍♂️

====================

質問の経緯を説明しますと、「custom-fields」アプリを使ってメタフィールドに追加した日付が、dateフィルターで変換できなくて困っています。

https://apps.shopify.com/custom-fields-2

このアプリを通して、カレンダーから日付を選択することで、メタフィールドに以下を設定しました。

 

 

namespace: custom_fields
key: publish_at
value : 1622512407

 

 

この値を用いて、dateフィルターで日付を表示したいのですがうまくいきません。

 

 

<div class="custom-field--value">  
      {{ product.metafields.custom_fields["publish_at"] | date: "%m/%d/%Y" }}
</div>

 

 

 

dateフィルターは日付の文字列を、パースしてフォーマットしてくれると認識しており、そもそもint型のunix timeには対応していないのではないかと考えていますが、合っているでしょうか?

dateフィルターのドキュメントには書いてありませんが、こちらのLiquidドキュメントを見ると、入力はRubyのTime.parseと同じ形式を受け付けるようです。つまり数値では正常に動作しないのではないかと思います。

 

一方、アプリのドキュメントを見ますと日付のフィールドを使うと「Unix Timestampで保存さるよ!Unix Timestampは汎用性が高くて便利!」というような形で説明されており、もしかしたら日付に変換するための方法があるのではないかと疑問に思っています。

スクリーンショット 2021-06-19 11.27.16.jpgスクリーンショット 2021-06-19 11.27.48.jpg

 

このアプリのドキュメントには、下記のように Example Codeで上記のLiquidのような書き方を推奨されているため、アプリ的にはできるとされていると思うのですがなぜ使えないのでしょうか....

スクリーンショット 2021-06-19 12.00.11.jpg

 もし何かお分かりの方がいらっしゃったら教えていただけますと嬉しいです🙇‍♂️

 
1 件の受理された解決策

abekeishi
遊覧客
22 11 28

成功

すみません、こちらLiquidオブジェクトの参照が間違っており、書き換えたところ正常に動作するようになりました。

結論としてはdateフィルターはUnixタイムスタンプをフィルターできるということです。お騒がせいたしました。

元の投稿で解決策を見る

1件の返信1

abekeishi
遊覧客
22 11 28

成功

すみません、こちらLiquidオブジェクトの参照が間違っており、書き換えたところ正常に動作するようになりました。

結論としてはdateフィルターはUnixタイムスタンプをフィルターできるということです。お騒がせいたしました。