東部時間で次のようなコース スケジュールがあります (最初の 4 行)。
Sat 12/08/2012 1:00-3:30 PM
Mon 12/10/2012 9:30-12:00 AM
Wed 12/12/2012 9:30-12:00 AM
Sat 12/15/2012 1:00-3:30 PM
ラジオ ボタンをオンにして、別のタイム ゾーンを選択できます。たとえば、中央時間を選択すると、変更時に次のように表示されます。
Sat 12/08/2012 12:00-2:30 PM
Mon 12/10/2012 8:30-11:00 AM
Wed 12/12/2012 8:30-11:00 AM
Sat 12/15/2012 12:00-2:30 PM
代わりに次のように表示されます。
Wed 30/05/2012 8:09 am-11:09 pm
Sat 00/08/2012 12:09-2:09 pm
Mon 30/10/2012 8:09 am-11:09 pm
Wed 30/12/2012 8:09 am-11:09 pm
これの一部は日付形式の問題である可能性がありますが、形式は他の場所では正しく機能します。主な問題は、各行の 3 つの部分 (0 = 日、1 = 日付、2 = 時間) を取得する変更ループ (それぞれ) にあると思います (実際には、開始と終了時間、および真夜中の特殊なケースがあります)) 新しいタイム ゾーンのタイムシフトを適用し、新しい行の内容を作成します。何が問題なのかわかりません。どんなアイデアでも大歓迎です。(init vars とその他の上位のものは省略):
$('.timezoneSel').click(function (evtObj) {
_curevtObj = evtObj;
_prevtmzObj = _curtmzObj;
$('input.timezoneSel[value="' + _curevtObj.target.value + '"]').each(function () {
$(this).attr('checked', true);
});
for (var x = 0; x < timezoneset.length; x++) if (timezoneset[x].abbr == _curevtObj.target.value) _curtmzObj = timezoneset[x];
$('table.TPR_tblcoursedetails').each(function (i, val) {
$(this).contents().find('tr').each(function (irow, vrow) {
isEvening = false;
$(this).contents().find('span').each(function (icol, vcol) {
switch (icol) {
case 0:
rowwday = vcol.innerHTML;
break;
case 1:
rowdate = vcol.innerHTML;
break;
case 2:
rowtime = vcol.innerHTML;
break;
}
});
isEvening = ((rowtime.indexOf(" PM") > -1) ? true : false);
rowtimearr = rowtime.split("-");
if (rowtimearr[0] == MidNiteStr) rowtimearr[0] = "12:00 AM";
if (rowtimearr[1] == MidNiteStr) rowtimearr[1] = "12:00 AM";
if (rowtimearr[0].indexOf(" AM") < 0 && rowtimearr[0].indexOf(" PM") < 0) rowtimearr[0] += isEvening ? " PM" : " AM";
newStartDate = new Date(rowdate + ' ' + rowtimearr[0]);
newEndDate = new Date(rowdate + ' ' + rowtimearr[1]);
newStartDateMsec = newStartDate.getTime() + ((_curtmzObj.offset - _prevtmzObj.offset) * msecPerHour);
newEndDateMsec = newEndDate.getTime() + ((_curtmzObj.offset - _prevtmzObj.offset) * msecPerHour);
newStartDate = new Date(newStartDateMsec);
console.log(newStartDate);
newEndDate = new Date(newEndDateMsec);
$(this).contents().find('span').each(function (icol2, vcol2) {
adjStartTimeTT = newStartDate.format('tt');
adjEndTimeTT = newEndDate.format('tt');
console.log(adjStartTimeTT, adjEndTimeTT);
switch (icol2) {
case 0:
vcol2.innerHTML = newStartDate.format("ddd");
break;
case 1:
vcol2.innerHTML = newStartDate.format("MM/dd/yyyy");
break;
case 2:
vcol2.innerHTML = ((adjStartTimeTT == adjEndTimeTT) ? newStartDate.format("h:mm") : newStartDate.format("h:mm tt")) + "-" + ((useMidNite && newEndDate.format("h:mm tt") == "12:00 AM") ? MidNiteStr : newEndDate.format("h:mm tt"));
break;
}
});
});
filledonce = false;
});