【Blogger】コメントのタイムスタンプを時刻なしの yyyy/MM/dd 形式にする

Blogger のコメントのタイムスタンプには、yyyy/MM/dd の時刻なしの形式が存在しない。ないならば自分で作ろうと思った。

コメントのタイムスタンプの独自タグ

コメント欄のタイムスタンプ関連の独自タグは以下の3つ。

  • <data:post.comment.timestamp/>
  • <data:post.comment.timestampValue/>
  • <data:post.comment.timestampAbs/>

いちばん上のは Blogger の設定画面から選択した日付の形式で表示される。でもなぜか選択画面の表示と実際のそれが一致しないことが多い。謎。

そして、下の2つが 1970/01/01 00:00:00 からコメントが投稿された時刻までのミリ秒数を表示させる独自タグ。ValueAbs(おそらく Absolute の略) の違いは下4桁が 0000 に丸められているか否かだけ、秒数表示をしないなら実質おんなじものとして捉えてオッケー。

筆者は Value のほうを使ったので、この記事でもそちらで説明していく。需要がなくても勝手に説明!

コメントのタイムスタンプを yyyy/MM/dd 形式にする

まず、コメント表示部分の b:loop タグにこのように index 属性を追加する。

<b:loop index='i' values='data:post.comments' var='comment'>

次にこの b:loop 内の日付を表示させたいところに以下のコードを追加する。

<p class='comment-timestamp'>
  <data:comment.timestamp/>
<script>
(function(){
  const timestamp = document.querySelectorAll('.comment-timestamp')[<data:i/>];
  const options = {year: 'numeric', month: '2-digit', day: '2-digit'};
  timestamp.innerText = new Date(<data:comment.timestampValue/>).toLocaleDateString('ja-JP', options);
}());
</script>
</p>

なるべくコード行数を減らしたいがために CDATA セクションを使わなかったので、テーマを保存した段階でスクリプト内の ' の部分が &#39; に変換されるけどそのままで大丈夫。

うまくいったらコメントの投稿日時が yyyy/MM/dd 形式で表示される。JavaScript が無効のときは設定画面で選んだ形式で日時が表示される。万が一のときも安心だ。

あとがき

コメントの投稿日時から時刻を消し去る方法について書いた。

ほんとは JS 使わずに実装したかった。が、どうやら方法がなさそうだったので仕方なく使った。まあいい感じにできたのではないだろうかと自画自賛してみる。

編集
ホーム