※RSSによって返ってくるものが若干異なっていることがあるので確認の上で実装してください
弊ブログにてRSSで表示してるコンテンツに日付をだしたかったけどそのまま出したらグリニッジ標準時っぽいのが出たのでお直し。
コード
利用しているもの / 利用するもの
- RSSは
rss2json
を利用してコンバートしています - 日付ライブラリは
date-fns
にしました- JSの日付ライブラリは、どれを使えばいいのかまとめ の記事を参考にして、スポンサーが多く開発継続性が高そうという理由で選定
実装時のコツ
- RSSで帰ってくる日付が
2023-08-02 13:10:41
になっている。こんな昼間に投稿してないはず。- 多分GMTだなあということで……下記。
.000+0000
ではなく+0000
でも動いたが、念のためlocale:ja
もなくても動くが、念のためhh:mm:dd
にしてズレるなあと思うアホをした。24時間表記は大文字でHHなのでHH:mm:dd
import { format } from "date-fns"; import ja from "date-fns/locale/ja/index.js"; const formattedRecentData = recentData.map((item: RssItem) => ({ ...item, pubDate: format(new Date(`${item.pubDate}.000+0000`), "yyyy-MM-dd HH:mm:dd", { locale: ja, }), }));
つぶやき
- 世界的な規格なのでGMTを利用しているのだと推測するけど、それなら
+0000
までつけてほしかったな~