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

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

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

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

Q&A

解決済

1回答

10689閲覧

fullcalendarのendが1日少なく表示される

Misaco

総合スコア17

JavaScript

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

1グッド

3クリップ

投稿2015/10/15 15:13

編集2015/10/15 15:19

fullcalendarのeventsで、サーバから戻って来たJsonの値を endに設定しているのですが、カレンダーに表示されるendの日にちが想定している日にちと異なります。

サーバが返す値
start: 2015-10-07 09:00:00Z
end:2015-10-09 23:59:59Z

allDayはtrue

カレンダーに表示される期間
2015/10/07 〜 2015/10/8(1日少なく表示される)

allDayがfalseの時は
2015/10/07〜2015/10/9(期待通り)

サーバが返す値を以下のように書き換えてみましたが、
結果は変わりませんでした。
2015-10-09T18:00:00+09:00
2015-10-09T18:00:00.0+0100

allDayがtrueだと、時間が00:00:00と解釈されてしまい、
2015/10/09 でも、前日と判断されてしまうのかな?と思いますが、
回避する方法はありますでしょうか。

よろしくお願いします。

lang

1events: function(start, end, timezone, callback) { 2 3 $.ajax({ 4 type: "POST", 5 url: url, 6 data: JSON.stringify(post_data), 7 contentType: "application/json; charset=utf-8", 8 dataType: "json", 9 success: function (res) { 10 if (res) { 11 var events = []; 12 for (var cnt in res) { 13 alert(res[cnt].end); 14 events.push({ 15 id: res[cnt].p_id, 16 title: res[count].title, 17 allDay:res[cnt].allDay, 18 start: res[cnt].start, 19 end: res[cnt].end 20 }); 21 }); 22 callback(events); 23 } 24 }); 25 }
a3ask👍を押しています

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

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

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

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

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

guest

回答1

0

ベストアンサー

調査しきれなかったけど、
日付型で渡すと解消されるようです。

var startDate = new Date(Date.parse( res[cnt].start )); var endDate = new Date(Date.parse( res[cnt].end )); events.push({ id: res[cnt].p_id, title: res[cnt].title, allDay:res[cnt].allDay, start: startDate, end: endDate });

どうもタイムゾーンが関係しているっぽいのですが、
allDay=trueのとき、
文字型でendを設定すると、
2015-10-09 00:00:00(GMT+00:00)
と変換され、
2015-10-07 00:00:00(GMT+00:00)~2015-10-09 00:00:00(GMT+00:00)
で描画するため、ご質問の状況が起こるようです。

投稿2015/10/17 01:09

TetsujiMiwa

総合スコア1124

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

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

Misaco

2015/10/17 13:07

Data型で渡してみるという発想がありませんでした。。eventResizeでイベントを受け取る時も、同様の現象だったので合わせて確認してみます。週明けにまたソースに触れるので、結果をまたご報告します。ありがとうございました!
Misaco

2015/10/20 14:11

allDay=trueのとき、Date型でわたすと正しく表示することができました。 allDay=falseのとき、Date型でわたすと一日多く表示されました。 なので、以下のような関数を作成して対応しました。 ありがとうございました! function dateOffset(allDay, end) { if (allDay) { return new Date(end); } return end; }
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問