2

フルカレンダーの日付に問題があります。

$("#calendar").fullCalendar(
    //...
    eventDrop:
        function(event, dayDelta, minuteDelta, allDay, revertFunc, jsEvent, ui, view)
        {
            console.log(event.start); // start is a date
        }
);

ドラッグ アンド ドロップ後、コンソールに次のように表示されます。

Date {Wed Jul 03 2013 16:50:00 GMT+0200}

fullcalendar で GMT+0000 のように UTC で値を表示したいと考えています。これを行う方法はありますか?

ignoreTimezone設定を使用してみましたが、役に立ちません。おそらく私はそれを正しく使用していません。

4

1 に答える 1

2

実際に表示されているオフセットを生成しているのは FullCalendar ではありません。これは単なる JavaScript のDateオブジェクトです。

の動作はDate、UTC で内部的に時間を追跡することですが、表示するときは常に、ローカル コンピューターのタイム ゾーンを使用して値が表示されます。この動作を無効にする直接的な方法はありません。それが JavaScript の日付のしくみです。JavaScriptの日付の詳細については、このサイトを参照してください。

UTC で時刻を明示的に出力することを検討することをお勧めします。例えば:

console.log(event.start.toUTCString());

カレンダー上のアイテムをすでに UTC にあるものとして処理しようとしている場合、それは FullCalendar でサポートされている動作ではありません。次のようなものを使用して、「偽造」を試みることができます。

var dt = event.start;
var adjusted = new Date(dt.getTime() - (dt.getTimezoneOffset() * 60000));
console.log(adjusted.toUTCString());

ただし、ユーザーのローカル タイム ゾーンで夏時間が開始または終了する移行ポイントの周りで、興味深いまたは奇妙な動作が見られる場合があります。これを回避する唯一の方法は、FullCalendar でカレンダー全体のタイム ゾーンを UTC に設定できるようにすることですが、これは AFAIK では存在しません。

于 2013-07-14T01:10:19.257 に答える