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

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

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

Bloggerは、Googleが運営している無料のレンタルブログサービス。デザインやGoogleの技術力による高い機能が特徴です。さらに複数のブログを運営することが可能で、サブドメインを用いて独自ドメインのブログを複数運営することもできます。

DateTime

多くのプログラミング言語におけるDateTimeオブジェクトは、日付と時間に関する演算と出力を行います。

JavaScript

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

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

1回答

2671閲覧

Bloggerの投稿日時が正常に表示されない

退会済みユーザー

退会済みユーザー

総合スコア0

Blogger

Bloggerは、Googleが運営している無料のレンタルブログサービス。デザインやGoogleの技術力による高い機能が特徴です。さらに複数のブログを運営することが可能で、サブドメインを用いて独自ドメインのブログを複数運営することもできます。

DateTime

多くのプログラミング言語におけるDateTimeオブジェクトは、日付と時間に関する演算と出力を行います。

JavaScript

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

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2018/03/09 10:04

編集2018/05/10 05:32

前提・実現したいこと

ブログサービスBlogger (ブロガー) で記事の投稿日時を正しく表示させたいです。

発生している問題・エラーメッセージ

記事の投稿日時の「月」が正しく表示されていません。
下の画像のように月の部分が「undefined」となっています。
イメージ説明

該当のソースコード

<div class='post-title'><h1><data:post.title/></h1></div> <div class='post-details'><data:post.author/> / <time expr:data-pub='data:post.timestampISO8601'/></div> </div> </div> </div> </div> <script type='text/javascript'> //<![CDATA[ var $=jQuery;$("#hpick .shutter_wrap").css("min-height",$(window).height()),$("#shutter_post_header").html($("#hpick").html()).removeClass("hidden"),$("#hpick").remove(),$(window).resize(function(){$("#shutter_post_header .shutter_wrap").css("min-height",$(window).height())}),$("time").map(function(){var e=$(this).attr("data-pub"),t=["","January","February","March","April","May","June","July","August","September","October","November","December"][(e=(e=e.split("T"))[0].split("-"))[1]]+" "+e[2]+", "+e[0];$(this).after(t),$(this).remove()}); //]]> </script>

試したこと

CSSとHTMLの知識が少しある程度なので<script></script>の部分が理解できません。
何かの文字を置き換えたりしているということくらいしか解りません。
ネットで「Blogger date undefined」と調べると設定の言語と形式のフォーマットという部分で時刻の表示形式を変更するようにと書いてあり、試してみたのですが改善しませんでした。

補足情報(FW/ツールのバージョンなど)

使用しているテンプレートはColorlibのShutterです。
テンプレートのドキュメント
問題のページ

ドキュメントページでは正常に表示されていてソースコードを見ても違いが解りません。
おそらくコード自体に問題はなく、設定を変える必要があると思います。
詳しい方にお聞きしたくてこの場で質問させていただきました。
宜しくお願いします。

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

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

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

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

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

guest

回答1

0

ベストアンサー

NOTE:ワンライナー嫌い!!!


月名配列から月名を取得する際のインデックス指定が数値文字列(本来数値である必要がある)であることによる不具合です. 下記をお試しください.
"December"][+(e=("の部分において+(数値型への変換)を追加しています.

JavaScript

1var $=jQuery;$("#hpick .shutter_wrap").css("min-height",$(window).height()),$("#shutter_post_header").html($("#hpick").html()).removeClass("hidden"),$("#hpick").remove(),$(window).resize(function(){$("#shutter_post_header .shutter_wrap").css("min-height",$(window).height())}),$("time").map(function(){var e=$(this).attr("data-pub"),t=["","January","February","March","April","May","June","July","August","September","October","November","December"][+(e=(e=e.split("T"))[0].split("-"))[1]]+" "+e[2]+", "+e[0];$(this).after(t),$(this).remove()});

ワンライナーコードを解すとしくじっている部分がよく判ります.

HTML

1<time data-pub='2018-03-09T15:24:00+09:00'></time>

JavaScript

1$("time").map( 2 function(){ 3 var e=$(this).attr("data-pub"); 4 var months = ["","January","February","March","April","May","June","July","August","September","October","November","December"]; 5 e=e.split("T"); 6 e=e[0].split("-"); 7 t=months[e[1]]+" "+e[2]+", "+e[0];//←インデックスがNumberじゃない! 8 $(this).after(t); 9 $(this).remove(); 10 } 11);

投稿2018/03/09 10:47

編集2018/03/09 10:58
defghi1977

総合スコア4756

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

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

退会済みユーザー

退会済みユーザー

2018/03/09 10:57

回答して頂いて有難うございます。 どこで折り返したらいいのかわからず、1行で書いてしまって申し訳ありませんでした。 示していただいたコードに置き換えたところ、正常に表示させることができました。 本当にありがとうございました。 私もいつかこのくらいの問題は自分で解決できるようにプログラミングを始めたいと思います。 ただ、1つだけ気になったことがあります。 公式のドキュメントでは+(数値型への変換)の追加がなくても正常に表示されてるのはどうしてですか?
defghi1977

2018/03/09 11:00 編集

>どこで折り返したらいいのかわからず、1行で書いてしまって申し訳ありませんでした。 これはコードを短くする手法の一つであなたのせいじゃないので問題ありません. (むしろ手を入れると対処できなくなります) >公式のドキュメントでは+(数値型への変換)の追加がなくても正常に表示されてるのはどうしてですか? 多分間違いに気がついてこっそり直したんでしょう.
defghi1977

2018/03/09 11:08

ああ, わかったテンプレ作った人1月から9月までをテストしてない. "11"月だとうまく配列の検索に成功しちゃうのでバグに気付いていないんだ.
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問