質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
XML

XMLは仕様の1つで、マークアップ言語群を構築するために使われています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

1回答

1465閲覧

BASEのブログRSSの日付表示を整えたい

mamachu

総合スコア1

XML

XMLは仕様の1つで、マークアップ言語群を構築するために使われています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

0クリップ

投稿2020/07/02 08:31

前提・実現したいこと

BASEのテンプレートドキュメントから、ブログRSSの表示をしているのですが
日付の表示を整えたいので、わかる方いらっしゃいましたら
お力を貸してください。

試したこと

公式のブログRSS表示ソース
https://docs.thebase.in/docs/template/apps/blog_app

<script> $(function(){ $.ajax({ url: '{BlogFeedPageURL}', type: 'GET', dataType: 'xml', }) .done(function(data) { i = 1; $('item', data).each(function() { var link = $('link', this).text(); var title = $('title', this).text(); var date = $(this).find('pubDate').text(); var image = $('image', this).text(); var blog_content = '<div><a href="' + link + '"><p>' + date + '</p><img src="' + image + '"><p>' + title + '</p></a></div>'; //alert(link + ' : ' + title + ' : ' + image); $('#container').append(blog_content); if (i >= 3) { return false; } i++; }); }); }); </script>

該当のソースコード

var date = $(this).find('pubDate').text();

自分で調べて、上記コードで日付を表示させたものの、表示形式が
「Thu, 02 Jul 2020 16:13:00 +0900」
という表示のため、この日付を
「2020/07/02」または「2020年7月2日」といった表示にしたい。

どうぞ、よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

自分で調べて

RSSの仕様も調べましょう。

pubDate の出力フォーマットは変更してはいけません。

RSSフィード側でフォーマットを弄ると、リーダー側が日付を正しくパースしなくなるため。
表示される形式を変えていいのは RSSリーダー側です。

追記)

RSS表示

リーダーのことであれば、モダンブラウザのjavascriptは Date.parse() できませんか?

コメントを受けて)
RSSリーダー側ですと、応答される JavaScript内で文字列処理してはどうでしょうか。

javascript

1/* omitted */ 2 .done(function(data) { 3 i = 1; 4 $('item', data).each(function() { 5 var link = $('link', this).text(); 6 var title = $('title', this).text(); 7 var date = $(this).find('pubDate').text(); 8 9 // parse すると、{number} で msecが得られるので、Dateオブジェクト d を生成 10 var d = new Date( Date.parse(date) ); 11 // 任意のフォーマットにする 12 var Y = (''+d.getFullYear()).padStart(4, '0'); 13 var M = (''+(d.getMonth()+1)).padStart(2, '0'); 14 var D = (''+d.getDate()).padStart(2, '0'); 15 date = `${Y}${M}${D}`; 16 17 var image = $('image', this).text(); 18 var blog_content = '<div><a href="' + link + '"><p>' + date + '</p><img src="' + image + '"><p>' + title + '</p></a></div>'; 19//alert(link + ' : ' + title + ' : ' + image); 20 $('#container').append(blog_content); 21 if (i >= 3) { 22 return false; 23 } 24 i++; 25 }); 26 });

投稿2020/07/02 16:17

編集2020/07/03 05:00
AkitoshiManabe

総合スコア5432

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

mamachu

2020/07/03 04:35 編集

Date.parse() やRSS仕様など、半日以上調べて試したものの、思う通りに表示させることができませんでした…。 ---- $date = date("Y年 n月 j日", strtotime($item->pubDate)); $date = date('Y年 m月 d日', strtotime($item->children("http://purl.org/dc/elements/1.1/")->date)); for (i in data) { ~ などなど、試したものの、何が原因なのか、実際のBASE画面を編集しておりますが RSSが非表示になるか、「Thu, 02 Jul 2020 16:13:00 +0900」 のどちらかの結果にしかなりませんでした。 検索のヒントになりそうなものやコードなど、大変お忙しいところ申し訳ございませんが 指導いただければありがたいです…!
AkitoshiManabe

2020/07/03 05:03

非表示になるのは、PHPでRSSのフォーマットを崩したためかもしれません。 表示する直前に JavaScript で弄りましょう。
mamachu

2020/07/03 05:21

ソースを記載していただき、大変ありがとうございました! こちらで試したところ、きちんと日付で表示されるようになりました。 トータルで3日間ほど、ずっといじくりまわしていたので、ようやくこれでスッキリすることができました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問